我是 Django 的新手,在使用 django.contrib.auth.login 时遇到困难。
我的 urls.py:
from django.conf.urls import patterns, include, url
from myapp import views
from django.contrib import auth
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^accounts/', include('accounts.urls')),
url(r'^accounts/login/$', auth.login)
)
现在,当我尝试在模板中使用 url 时
<a href="{% url 'accounts/login' %}?next={{request.path}}">Login</a>
我收到 NoReverseMatch 错误。 我究竟做错了什么? 谢谢。
编辑1: 我终于能够解决 NoReverseMatch 错误。谢谢。 我仍然有问题。这是我更新的代码:
urls.py:
from django.conf.urls import patterns, include, url
from myapp import views
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^accounts/', include('accounts.urls')),
url(r'^accounts/login/$', login)
)
我的模板 index.html:
<a href="{% url 'django.contrib.auth.views.login' %}?next={{request.path}}">Login</a>
问题: 当我进入该页面并单击“登录”时,出现以下错误:
不存在于/accounts/login/
因此,它在 accounts/login/中查找 View ,而我在那里没有登录 View ,因为 django.contrib.auth.views.login 应该为我提供 View 。我应该如何修改我的 urls.py?还是有不同的方法来解决它?谢谢。
编辑 2:
我的账户/urls.py:
from django.conf.urls import patterns, url
from accounts import views
urlpatterns = patterns('',
url(r'^register/$', views.register, name='register')
)
最佳答案
这有一些问题。首先,您试图在您的网址中调用非 View 函数。 “auth.login”是django auth app提供的登录功能,但是:
“auth.views.login”是您要调用的 View 函数,因此:
from django.contrib.auth.views import login
...
url(r'^accounts/login/$', login),
每当您的某个 View 出现问题时,reverse 将不起作用(我会尝试找到相关的文档)。
其次,您正在尝试反转 URL 路径。 Reverse 将采用 View 名称或 URL 名称并返回相应的 URL。如果您将 URL 更改为指向 View (如上所述),akshar 的回答应该是正确的:
{% url 'django.contrib.auth.views.login' %}
关于django - 在 Django 模板中引用 django.contrib.auth.login,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881096/