Question

J'utilise l'authentification de Django, et dans le modèle login.html, l'instruction suivante génère une erreur:

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

TemplateSyntaxError à / login

     

Pris NoReverseMatch lors du rendu. Inverse pour '' django.contrib.auth.views.login '' avec des arguments '()' et arguments mot-clé '{}' not found

Cette URL est définie dans mon urls.py:

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

J'ai installé le système auth:

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

Toutes les idées?

Était-ce utile?

La solution

Comme de Django 1.10:

de Django 1.10, il est plus possible d'utiliser le 'django.contrib.auth.views.login' de chaîne dans url() ou la balise {% url %}.

D'abord, changer vos habitudes URL pour utiliser le appelable, et nommez le modèle d'URL. Par exemple:

from django.contrib.auth import views as auth_views

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

Ensuite, mettre à jour votre balise URL pour utiliser le même nom:

{% url 'login' %}

Comme de Django 1.5:

Vous n'avez pas besoin {% load url from future %} plus, il suffit d'utiliser la syntaxe cité (de {% url 'django.contrib.auth.views.login' %}) et vous avez terminé (voir le Django 1.5 notes de version ).

Comme de Django 1.3:

Notez que comme de Django 1.3 (comme points Karen Tracey ci-dessous ), la bonne façon de résoudre ce problème est d'ajouter:

{% load url from future %}

en haut de votre modèle, puis utilisez:

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

Avant Django 1.3:

A en juger par ce message d'erreur (notez le double guillemets simples autour du chemin de la vue), je suppose que le {% url ... %} tag ne veut pas de guillemets, essayez:

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

Autres conseils

La syntaxe avec des guillemets est nouveau dans Django 1.3. La bonne façon de corriger l'erreur sur 1.3 avant serait à incldue {% url de charge de future%} dans le modèle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top