簡體   English   中英

注銷無法正常工作Django 1.9

[英]Logout not working Django 1.9

我正在建立Django網站,但無法登出。 該網站包含兩個應用程序, 主要的應用程序是公共的,而學生應用程序是私有的。 在我的學生應用程序中,除注銷方法外,我在每種方法中都使用了@login_required裝飾器。 但是,當我單擊學生應用程序中的注銷鏈接時,我的頁面沒有重定向到應用程序,而是轉到了學生應用程序中的另一個視圖,並且當我重新加載頁面時,盡管我已經將內容放到了該頁面中,但內容仍然可用@login_required裝飾器。 這是我的代碼:

網站/ urls.py

from main_app import urls as main_urls
from student_app import urls as std_urls

urlpatterns = [
url(r'^index/', include(main_urls)),
url(r'^student-area/', include(std_urls))]

網站/ settings.py

LOGIN_URL = '/index/login/'
LOGIN_REDIRECT_URL = '/student-area/'

main_app / urls.py

...
urlpatterns = [
url(r'^$', views.index, name='index'),
...]

student_app / urls.py

...
urlpatterns = [
url(r'^$', views.std_videos_view, name='student_area'),
url(r'^(?P<video_key>[a-zA-Z0-9\_\.]+)/$', views.std_video_detail_view, name='video_detail'),
url(r'^materials-std/$', views.std_material_view, name='materials_std_view'),
url(r'^download-material/(?P<material_key>[a-zA-Z0-9\_\.]+)/$', views.std_material_download, name='download_material'),
url(r'^sims/$', views.std_sim_view, name='sims_view'),
url(r'^download-sim/(?P<sim_key>[a-zA-Z0-9\_\.]+)/$', views.std_sim_download, name='download_sim'),
url(r'^contact/$', views.std_contact_view, name='std_contact'),
url(r'^logout/$', views.user_logout, name='user_logout')
]

student_app / views.py

from django.contrib.auth import logout
from django.shortcuts import redirect
...
def user_logout(request):
    logout(request)
    return redirect('index')

student_app /模板/ student_area.html

...
<a href={% url 'user_logout' %} class="btn btn-default">Logout</a>
...

我迷失了這個問題,在此先感謝您。

您的video_detail URL模式匹配/logout/ Django會在找到匹配項后立即停止,因此對/logout/請求將由std_video_detail_view視圖而不是user_logout視圖處理。

您可以通過更改video_detail URL的正則表達式來解決此問題,以免沖突(例如,您可以使用^videos/(?P<video_key>[a-zA-Z0-9\\_\\.]+)/$ ),或者通過將注銷URL模式移動到視頻詳細信息模式上方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM