Frage

Ich verwende die Authentifizierung von Django und in der Vorlage login.html generiert die folgende Anweisung einen Fehler:

{% url 'django.contrib.auth.views.login' %}

TemplateSyntaxError AT /Login

Erfasste Noreversematch während des Renders: Umkehrung für '' Django.contrib.auth.views.login '' mit Argumenten '()' und Keyword -Argumenten '{}' nicht gefunden.

Diese URL ist in meiner URLS.Py definiert:

(r'^login$', 'django.contrib.auth.views.login')

Ich habe das Auth -System installiert:

INSTALLED_APPS = (
    'django.contrib.auth',
...
)

Irgendwelche Ideen?

War es hilfreich?

Lösung

Ab Django 1.10:

Ab Django 1.10 ist es nicht mehr möglich, die Zeichenfolge zu verwenden 'django.contrib.auth.views.login' in url() oder der {% url %} Schild.

Ändern Sie zunächst Ihre URL -Muster, um das Callable zu verwenden, und nennen Sie das URL -Muster. Zum Beispiel:

from django.contrib.auth import views as auth_views

url_patterns = [
    url(r'^login$', auth_views.login, name='login'),
]

Aktualisieren Sie dann Ihr URL -Tag, um denselben Namen zu verwenden:

{% url 'login' %}

Ab Django 1.5:

Du brauchst nicht {% load url from future %} Verwenden Sie einfach mehr die zitierte Syntax ({% url 'django.contrib.auth.views.login' %}) Und du bist fertig (siehe das Django 1.5 Release -Notizen).

Ab Django 1.3:

Beachten Sie, dass Ab Django 1.3 (Wie Karen Tracey betont unter), die richtige Art und Weise, um dies zu beheben, besteht darin, hinzuzufügen:

{% load url from future %}

Oben in Ihrer Vorlage und dann verwenden Sie:

{% url 'django.contrib.auth.views.login' %}

Vor Django 1.3:

Nach dieser Fehlermeldung zu urteilen (beachten {% url ... %} Tag will keine Zitate, versuchen Sie es mit:

{% url django.contrib.auth.views.login %}

Andere Tipps

Die Syntax mit Zitaten ist neu in Django 1.3. Die korrekte Möglichkeit, den Fehler auf 1.3 vorwärts zu beheben, besteht darin, die URL von Future %} in der Vorlage zu incLDUe { % ladet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top