Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确地反转Django身份验证登录?_Django_Django Urls - Fatal编程技术网

如何正确地反转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提供的代码示例。