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

Django配置LOGOUT_REDIRECT_URL为refresh视图找不到视图如何解决

问题解决:Logout redirect url 找不到视图

报错原因

该错误的核心原因是你没有在项目的urls.py文件中为refresh视图配置对应命名路由:

  • Django的LOGOUT_REDIRECT_URL参数传入字符串形式的视图名时,会自动调用reverse()函数匹配urls.py中注册的name属性对应的路由
  • 你设置LOGOUT_REDIRECT_URL = 'about'能正常运行,说明你已经为about视图在urls.py中配置了name='about'的路由,而refresh视图没有做对应的配置,所以会触发「View name was wrong」报错。

修复方法

在对应app的urls.py中添加refresh视图的路由配置即可,示例:

from django.urls import path
from . import views

urlpatterns = [
    # 你原有其他路由
    path('about/', views.about, name='about'),
    # 新增refresh路由,指定name为refresh
    path('refresh/', views.refresh, name='refresh'),
]

另外建议你优化refresh视图的代码,添加默认回退地址,避免HTTP_REFERER为空时出现异常:

def refresh(request):
    return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/")) 

其他登出后刷新页面的实现方案

  • 方案1:如果需要每次登出后返回固定页面,直接在LOGOUT_REDIRECT_URL中配置对应路径即可,比如返回首页设置为LOGOUT_REDIRECT_URL = '/',不需要额外编写视图。
  • 方案2:自定义登出视图,将登出逻辑和重定向逻辑合并,不需要单独配置跳转路由:
from django.contrib.auth import logout
from django.http import HttpResponseRedirect

def custom_logout(request):
    logout(request)
    return HttpResponseRedirect(request.META.get("HTTP_REFERER", "/"))

之后在urls.py中将登出路由指向该自定义视图即可,无需额外配置LOGOUT_REDIRECT_URL。

  • 方案3:继承Django自带的LogoutView自定义登出类,动态获取跳转地址:
from django.contrib.auth.views import LogoutView

class CustomLogoutView(LogoutView):
    def get_next_page(self):
        return self.request.META.get("HTTP_REFERER", super().get_next_page())

在urls.py中配置对应路由指向CustomLogoutView.as_view()即可。


内容的提问来源于stack exchange,提问作者Стопчак Олег

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03