【发布时间】:2018-11-29 22:48:45
【问题描述】:
我正在开发一个 Django 网络应用程序,它有用户帐户,也有登录和注销功能。
我想要的是 mywebsite.com/accounts/login/ 作为登录页面。这正在按预期工作。
这个问题与注销有关 - 我想要的是 mywebsite.com/accounts/logout/ 注销用户并将他们重定向到登录页面。但是,这似乎不起作用。
这是我在 accounts/urls.py 中的 url 配置:
from . import views
urlpatterns = [
url(r'^login/$', views.LoginView.as_view(), name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
]
使用此配置,登录工作正常。但是当我访问 mywebsite.com/accounts/logout/ 时,我会立即返回到我当前所在的页面。
但是,如果我更改注销网址:
from . import views
urlpatterns = [
url(r'^login/$', views.LoginView.as_view(), name='login'),
url(r'^logMeOutPlease/$', auth_views.logout, name='logout'),
]
然后 mywebsite.com/accounts/login 按预期工作,mywebsite.com/accounts/logMeOutPlease 按预期工作。第一个配置不起作用有什么原因吗?
但是,如果我将注销功能移到顶层(即 mywebsite.com/logout/),那么它又可以正常工作了。
作为参考,这是“顶级”网址文件中的内容:
urlpatterns = [
# other urls that I can't show here
url(r'^redirect/', include('mywebsite.apps.redirect.urls')),
url(r'^accounts/', include('mywebsite.apps.accounts.urls')),
url(r'^$', RedirectView.as_view(url='redirect/')),
url(r'^admin/', admin.site.urls),
]
我使用的是 Django 2.0.6 和 Python 3.5.2,我的笔记本电脑是 Ubuntu 16.04。
【问题讨论】:
-
你能提供主要的
urls.py&accounts/urls.py吗?这将有助于调试代码 -
我已经添加了主要的 urls.py。我已经向你展示了所有的 accounts/urls.py,减去了一些导入
标签: django python-3.x authentication