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

Django如何按用户组正确跳转页面?解决重定向过多问题

解决被封禁用户点击Post按钮后重定向循环的问题

你的浏览器提示重定向次数过多,核心问题出在banned_alert视图函数里——它直接重定向到自身对应的URL,每次访问都会触发新的重定向,形成无限循环。下面是正确的实现方案:

1. 修复视图函数

banned_alert的作用是展示封禁提示页面,不需要重定向,直接渲染对应的模板即可:

# views.py
def banned_alert(request):
    return render(request, 'main/banned_alert.html')

注意确保模板文件banned_alert.html放在main应用的templates/main目录下,和Django的模板查找规则匹配。

2. 优化URL写法(推荐)

避免在模板中硬编码URL,改用Django的{% url %}标签,后续修改URL配置时无需手动更新模板:

<!-- base.html -->
{% load get_group %}
{% if request.user|has_group:"mod" or request.user|has_group:"default" or user.is_staff %}
<a class="nav-link" href="{% url 'create_post' %}">Post</a>
{% else %}
<a class="nav-link" href="{% url 'banned_alert' %}">Post</a>
{% endif %}

3. 增强安全性(可选)

为了防止被封禁用户直接手动访问/create-post路径,建议在create_post视图中添加权限校验:

# views.py
def create_post(request):
    # 校验用户权限,无权限则跳转封禁提示页
    if not (request.user|has_group:"mod" or request.user|has_group:"default" or request.user.is_staff):
        return redirect('banned_alert')
    
    # 原有的创建帖子逻辑
    # ...

完成以上修改后,被封禁用户点击Post按钮会正常打开封禁提示页面,不会再出现重定向循环问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:54:16