如何正确地反转Django身份验证登录?
好的,我要做的就是根据我视图中的一些逻辑将用户重定向到登录页面。我试过:如何正确地反转Django身份验证登录?,django,django-urls,Django,Django Urls,好的,我要做的就是根据我视图中的一些逻辑将用户重定向到登录页面。我试过: reverse('django.contrib.auth.views.login') 我还尝试在我的应用程序的url.py中创建一个唯一的条目 from django.contrib.auth.views import login urlpatterns = patterns('', url(r'^login/', login, name='my-login'), ) 那么在我看来, reverse('my-l
reverse('django.contrib.auth.views.login')
我还尝试在我的应用程序的url.py中创建一个唯一的条目
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'^login/', login, name='my-login'),
)
那么在我看来,
reverse('my-login')
但他们都给了我一个NoReverseMatch错误
正确的方法是什么?URL的其他地方肯定有问题。我可以很好地反转身份验证登录url模式:
from django.core.urlresolvers import reverse
print reverse('django.contrib.auth.views.login')
使用
admin
URL命名空间获取登录URL:
>>> from django.urls import reverse
>>> reverse('admin:login')
'/admin/login/'
请参阅的相关章节。自Django 1.1以来,URL名称空间一直可用。对于Django 3.1:
urlpatterns = [
....
path('login/', admin.site.login),
....
]
完成urlconf?也许你在登录时插入了这个部分,但不知怎么的,这是错误的。也可以尝试
'my\u login'
而不是'my-login'
。我不确定这是否重要,但我总是用带下划线的名字,好吗。所以,是的,最后是一个字符串。:)我把你的作为答案,因为你提醒我调试这个问题是多么容易。上述方法仍然不起作用,但我意识到,当我认为我正在更新我的url.py时,这些更改从未在服务器上进行过。因此,添加命名url模式在我实际使用它时确实有效。我只需要进入shell并使用几个pdb断点来解决这个问题。要使此解决方案起作用,您的url中需要类似的内容。py:url(r'^login/$,'django.contrib.auth.views.login'),
对吗?是的,这是正确的。我的回答假设,基于OP提供的代码示例。