Nat*_*eed 26 authentication django django-authentication django-login
我正在使用Django的身份验证,在login.html模板中,以下语句生成错误:
{% url 'django.contrib.auth.views.login' %}
Run Code Online (Sandbox Code Playgroud)
/ login时的TemplateSyntaxError
渲染时捕获NoReverseMatch:反向找到''django.contrib.auth.views.login'',其参数'()'和关键字参数'{}'未找到.
这个网址在我的urls.py中定义:
(r'^login$', 'django.contrib.auth.views.login')
Run Code Online (Sandbox Code Playgroud)
我安装了auth系统:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Dom*_*ger 65
由于Django的1.10,它是不再可能使用字符串'django.contrib.auth.views.login'中url()或{% url %}标签.
首先,更改您的url模式以使用callable,并命名url模式.例如:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
Run Code Online (Sandbox Code Playgroud)
然后更新您的网址标记以使用相同的名称:
{% url 'login' %}
Run Code Online (Sandbox Code Playgroud)
你不需要{% load url from future %}了,只需使用引用的语法({% url 'django.contrib.auth.views.login' %})就可以了(参见Django 1.5发行说明).
请注意,从Django 1.3开始(正如Karen Tracey在下面指出的那样),解决此问题的正确方法是添加:
{% load url from future %}
Run Code Online (Sandbox Code Playgroud)
在模板的顶部,然后使用:
{% url 'django.contrib.auth.views.login' %}
Run Code Online (Sandbox Code Playgroud)
根据该错误消息判断(注意视图路径周围的双引号),我猜测{% url ... %}标签不需要引号,请尝试:
{% url django.contrib.auth.views.login %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15709 次 |
| 最近记录: |