NoReverseMatch mentre il rendering: inversa per '' django.contrib.auth.views.login ''
-
14-10-2019 - |
Domanda
Sto utilizzando l'autenticazione di Django, e nel modello login.html, la seguente dichiarazione è generare un errore:
{% url 'django.contrib.auth.views.login' %}
TemplateSyntaxError a / login
Preso NoReverseMatch mentre il rendering:. Inversa per '' django.contrib.auth.views.login '' con argomenti '()' e argomenti a parola chiave '{}' non trovato
Questo URL viene definito nel mio urls.py:
(r'^login$', 'django.contrib.auth.views.login')
Ho installato il sistema di autenticazione:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
Tutte le idee?
Soluzione
Come di Django 1.10:
A partire dal Django 1.10, non è più possibile utilizzare la stringa nella 'django.contrib.auth.views.login'
url()
o tag {% url %}
.
In primo luogo, cambiare i modelli di URL per utilizzare il callable, e il nome del modello di URL. Ad esempio:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
Poi aggiornare il tag url di utilizzare lo stesso nome:
{% url 'login' %}
Come di Django 1.5:
Non hai bisogno {% load url from future %}
più, basta usare la sintassi citato ({% url 'django.contrib.auth.views.login' %}
) e il gioco è fatto (si veda il Django 1.5 note di rilascio ).
Come di Django 1.3:
Si noti che come di Django 1.3 (come Karen Tracey punti su sotto ), il modo corretto per risolvere questo problema è quello di aggiungere:
{% load url from future %}
nella parte superiore del vostro modello e quindi utilizzare:
{% url 'django.contrib.auth.views.login' %}
Prima di Django 1.3:
A giudicare da quel messaggio di errore (notare le virgolette singole in tutto il percorso alla vista), direi che il {% url ... %}
tag non vuole citazioni, provare:
{% url django.contrib.auth.views.login %}
Altri suggerimenti
La sintassi con le citazioni è di nuovo in Django 1.3. Il modo corretto per correggere l'errore in 1.3 in avanti sarebbe quello di incldue {url carico% dalla futura%} nel template.