Ich baue eine Django-Website, aber meine Abmeldung funktioniert nicht. Die Website besteht aus zwei Apps, der Haupt App, die öffentlich ist und der Student App, die privat ist. In meiner Student App habe ich die @login_required Dekorateur in jede Methode, mit Ausnahme der Abmelde-Methode. Aber wenn ich Sie auf die Abmelde Link in der Student App ist meine Seite nicht auf die Haupt weitergeleitet App, geht es in eine andere Ansicht in der Student app, und wenn ich die Seite neu zu laden, der Inhalt ist immer noch verfügbar, obwohl ich die @login_required Dekorateur gesetzt habe. Hier ist mein Code:Abmelden funktioniert nicht Django 1.9
Webseite/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))]
Webseite/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/templates/student_area.html
...
<a href={% url 'user_logout' %} class="btn btn-default">Logout</a>
...
ich in dieser bin verloren Problem, danke im Voraus.
Sorry, ich habe das * return * nur in der Frage vergessen. Aber ich habe das $ in die Logout-URL gesetzt und nicht funktioniert. – Toshi
Wenn das Problem durch ein fehlendes '$' verursacht wird, ist es eines der URL-Muster über dem Abmelde-URL-Muster. Ich habe 'user_logout' als Beispiel verwendet, weil Sie den Rest Ihrer URLs nicht angezeigt haben. – Alasdair
Ich habe die Frage mit den anderen URLs bearbeitet, sorry für den Ärger. – Toshi