渲染时的NoReverseMatch:对于'';django.contrib.auth.views.login'';
我正在使用Django的身份验证,在login.html模板中,以下语句生成错误:渲染时的NoReverseMatch:对于'';django.contrib.auth.views.login'';,django,authentication,django-authentication,django-login,Django,Authentication,Django Authentication,Django Login,我正在使用Django的身份验证,在login.html模板中,以下语句生成错误: {% url 'django.contrib.auth.views.login' %} TemplateSyntaxError位于/登录 呈现时捕获到NoReverseMatch:找不到参数为“()”且关键字参数为“{}”的“django.contrib.auth.views.login”的反向 此url在my urls.py中定义: (r'^login$', 'django.contrib.auth.view
{% url 'django.contrib.auth.views.login' %}
TemplateSyntaxError位于/登录
呈现时捕获到NoReverseMatch:找不到参数为“()”且关键字参数为“{}”的“django.contrib.auth.views.login”的反向
此url在my urls.py中定义:
(r'^login$', 'django.contrib.auth.views.login')
我已安装身份验证系统:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
有什么想法吗?从Django 1.10开始:
从Django 1.10开始,在url()
或{%url%}
标记中不再可以使用字符串'Django.contrib.auth.views.login'
首先,将您的url模式更改为使用callable,并命名url模式。例如:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
然后更新url标记以使用相同的名称:
{% url 'login' %}
自Django 1.5起:
您不再需要{%loadurl from future%}
,只需使用引用的语法({%url'django.contrib.auth.views.login%}
)即可完成(请参阅)
自Django 1.3起:
请注意(正如Karen Tracey指出的),解决此问题的正确方法是添加:
{% load url from future %}
在模板顶部,然后使用:
{% url 'django.contrib.auth.views.login' %}
在Django 1.3之前:
根据该错误消息判断(注意视图路径周围的双引号),我猜标记不需要引号,请尝试:
{% url django.contrib.auth.views.login %}
带引号的语法在Django 1.3中是新的。修复1.3 forward上错误的正确方法是在模板中包含{%load url from future%}。@juankysmith-发布一个新问题,包括模板代码和
url.py
,然后在这个答案的评论中用你的问题url ping我,我很乐意看一看。对我也有用。奇怪的是有引号…因为这个问题是写的,{%url%}
标记的语法已经改变,现在它需要引号(如果您在1.4或更低版本中使用{%load url from future%}
,或者如果您使用的是Django的开发版本).我认为你应该在回答django 1.3发行说明中包含这一点,以提供一些上下文。