我正在构建一个Django网站,但我的注销无效。该网站包含两个应用程序,即公开的主应用程序和私有的学生应用程序。在我的 student 应用程序中,我已将 @login_required 装饰器放在每个方法中,但注销方法除外。但是,当我单击 student 应用程序中的 logout 链接时,我的页面未被重定向到主应用程序,它会进入另一个视图学生应用,当我重新加载页面时,虽然我已经放置 @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>
...
我在这个问题上迷了路,谢谢你。
答案 0 :(得分:2)
您的var connString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;
using (var connection = new SqlConnection(connString)) {
foreach(var product in CSVProducts){
connection.Insert(product);
}
}
网址格式与video_detail
匹配。 Django一找到匹配就会停止,因此/logout/
的请求将由/logout/
视图而不是std_video_detail_view
视图处理。
您可以通过更改user_logout
网址的正则结构以使其不发生冲突(例如,您可以使用video_detail
)或在视频上方移动注销网址格式来解决此问题细节模式。