我正在使用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}。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top