Noreversematch während des Renders: Umkehrung für '' django.contrib.auth.views.login '' '
-
14-10-2019 - |
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?
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.