You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django独立Auth应用中如何配置/logout路由?

解决方案

分两种场景来配置,根据你需要的logout路径来选择:

场景1:将logout绑定到 /auth/logout(推荐,符合现有路由结构)

这种方式会让logout路径继承Auth应用的/auth前缀,不需要修改主路由,只需要在Auth应用自身的urls.py中添加路由规则:

  1. 先在Auth应用的views.py中实现(或导入)logout视图:
    如果你需要自定义logout逻辑:

    from django.contrib.auth import logout
    from django.shortcuts import redirect
    from django.views.decorators.csrf import csrf_protect
    
    @csrf_protect  # 记得加CSRF保护,避免跨站请求
    def log_out(request):
        if request.method == 'POST':
            logout(request)
            return redirect('auth:auth')  # 跳转回登录页,可根据需求修改目标路径
        # 如果是GET请求,重定向到登录页或提示用POST
        return redirect('auth:auth')
    

    或者直接使用Django内置的LogoutView(更安全,推荐):

    from django.contrib.auth.views import LogoutView
    
  2. 修改Auth应用的urls.py,添加logout路由:

    from django.conf.urls import url
    from . import views
    # 如果用内置视图,导入:from django.contrib.auth.views import LogoutView
    
    urlpatterns = [
        url(r'^$', views.log_in, name='auth'),
        # 新增logout路由,匹配/auth/logout路径
        url(r'^logout/$', views.log_out, name='logout'),
        # 如果用内置视图,替换成:
        # url(r'^logout/$', LogoutView.as_view(next_page='/auth/'), name='logout'),
    ]
    

之后你可以通过/auth/logout访问该视图,反向解析时用{% url 'auth:logout' %}(模板中)或reverse('auth:logout')(代码中)。

场景2:将logout绑定到根路径 /logout

如果确实需要直接通过/logout访问Auth应用的logout视图,需要在主项目的urls.py中直接添加一条路由规则:

  1. 确保Auth应用的views.py中已经实现了logout视图(同上)。

  2. 修改主项目的urls.py:

    from django.conf.urls import url, include
    from django.contrib import admin
    # 导入Auth应用的视图
    from auth import views as auth_views
    # 如果用内置视图,直接导入:from django.contrib.auth.views import LogoutView
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^auth/', include('auth.urls', namespace='auth'), name='auth'),
        # 新增根路径的logout路由
        url(r'^logout/$', auth_views.log_out, name='logout'),
        # 如果用内置视图,替换成:
        # url(r'^logout/$', LogoutView.as_view(next_page='/auth/'), name='logout'),
        ...
    ]
    

这种情况下,访问/logout即可触发视图,反向解析时直接用{% url 'logout' %}或reverse('logout')。

注意事项

  • 你的应用命名为auth可能会和Django内置的django.contrib.auth应用冲突,建议将应用重命名为accounts、myauth这类自定义名称,避免后续出现导入或命名问题。
  • 处理logout请求时,推荐使用POST方法并开启CSRF保护,防止恶意站点伪造logout请求。

内容的提问来源于stack exchange,提问作者袗泄写邪褉 袦褍谢褞泻芯胁

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:39:46