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

Django站点admin用户个人页404异常问题求助

问题分析与解决方案

核心问题

普通用户个人页(如/account/user01)可正常访问,但超级用户admin的个人页/account/admin/返回404,且无痕模式下访问正常。

可能原因及解决办法

1. 浏览器缓存与会话干扰

普通模式下浏览器缓存了旧的404响应,或登录会话中的数据导致路由匹配异常,而无痕模式无缓存,因此正常。

  • 解决操作:
    • 清除当前浏览器的缓存和Cookie
    • 按Ctrl+F5强制刷新页面,绕过缓存

2. 路由末尾斜杠不匹配

你的路由规则path('<str:username>', ...)匹配的是不带末尾斜杠的路径(如/account/admin),但实际访问的是带斜杠的/account/admin/。虽然Django默认APPEND_SLASH=True会自动重定向,但登录状态下可能因缓存或会话问题导致重定向失效。

  • 修改方案:
    调整account/urls.py中的路由,添加末尾斜杠:
    app_name = 'account'
    
    urlpatterns = [
        path('login/', auth_views.LoginView.as_view(template_name='account/login.html'), name='login'),
        path('signup/', views.signup, name='signup'),
        path('<str:username>/', views.profile, name='profile'),  # 新增末尾斜杠
    ]
    

3. 中间件或权限拦截

若项目中存在自定义中间件,可能对登录状态下的admin用户路径做了特殊拦截。

  • 排查步骤:
    1. 检查项目settings.py中的MIDDLEWARE配置,移除或注释可疑中间件后测试
    2. 在profile视图中添加调试打印,确认视图是否被执行:
      def profile(request, username):
          print(f"请求的用户名:{username}")
          try:
              user = User.objects.get(username=username)
              print(f"找到用户:{user.username}")
          except User.DoesNotExist:
              print(f"用户不存在:{username}")
              raise Http404("User Does Not Exist!")
          return render(request, 'account/profile.html', {'user': user})
      
    运行项目后访问/account/admin/,查看控制台输出,判断是路由未匹配还是用户查询失败。

内容的提问来源于stack exchange,提问作者brady

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:01:10