渲染时的noreversematch:'django.contrib.auth.views.login''的反向
-
14-10-2019 - |
题
我正在使用django的身份验证,在登录模板中,以下语句正在生成错误:
{% url 'django.contrib.auth.views.login' %}
templateSyntaxError在 /登录
在渲染时捕获了noreversematch:'django.contrib.auth.views.login'with grimuments'()'()''and关键字参数'{}'找不到。
此URL在我的urls.py中定义:
(r'^login$', 'django.contrib.auth.views.login')
我已经安装了身份验证系统:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
有任何想法吗?
解决方案
截至Django 1.10:
从Django 1.10开始,不再使用字符串 'django.contrib.auth.views.login'
在 url()
或者 {% url %}
标签。
首先,更改您的URL模式以使用可调用,并命名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:
你不需要 {% load url from future %}
再使用引用的语法({% url 'django.contrib.auth.views.login' %}
)然后你就完成了(请参阅 Django 1.5发行笔记).
截至Django 1.3:
注意 从Django 1.3开始 (正如卡伦·特蕾西(Karen Tracey)指出的那样 以下),解决此问题的正确方法是添加:
{% load url from future %}
在模板的顶部,然后使用:
{% url 'django.contrib.auth.views.login' %}
在Django 1.3之前:
通过该错误消息来判断(请注意围绕视图的路径的双重报价),我想 {% url ... %}
标签不需要报价,请尝试:
{% url django.contrib.auth.views.login %}
其他提示
引号的语法在Django 1.3中是新的。在1.3正向上修复错误的正确方法是,在模板中{%加载URL {%加载URL}。
不隶属于 StackOverflow