django - 在 Django 模板中引用 django.contrib.auth.login

标签 django django-templates django-views django-contrib

我是 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/

相关文章:

Django 1.11 : Float in query param in url

django-views - django - 一个模板中有 2 个 View

django - 如何扩展django管理员 View ?

google-app-engine - 在 Django 模板中使用 webapp2.uri_for

Django ModelChoiceField : how to iter through the instances in the template?

python - 如何从 Django Web 应用程序中在 linux shell 上启动 python 子进程命令?

django - 了解 jenkins 和 django-jenkins 的区别

python - 我如何使用 pony.vim

python - Django:无法解析相关模型 'users.UserProfile'

django:无法加载图像