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

Django如何根据来源页面实现愿望清单操作后的条件重定向

实现条件重定向的两种方案

方案1:通过HTTP Referer头实现(无需修改前端)

直接读取请求头里的来源页地址,操作完成后直接跳转回该地址即可,适合快速实现:

def save_wish(request, pk):
    if request.method == 'POST':
        student = request.user.student
        # 原有业务逻辑保持不变
        # 读取来源页地址,不存在时 fallback 到搜索页
        referer = request.META.get('HTTP_REFERER')
        return redirect(referer) if referer else redirect('students:search')
  • 优点:无需调整前端代码,改动量最小
  • 缺点:部分浏览器、隐私插件会禁用Referer头,极端场景下会跳转失败

方案2:通过POST参数传递来源页(推荐,可靠性更高)

在两个页面的爱心按钮提交表单中新增隐藏的来源标识参数,后端根据参数判断跳转地址,稳定性100%:

前端修改

搜索页爱心对应的提交表单新增隐藏字段:

<form method="post" action="{% url 'save_wish' pk=你的商品ID %}">
    {% csrf_token %}
    <input type="hidden" name="from" value="search">
    <!-- 原有爱心按钮代码不变 -->
</form>

愿望清单页爱心对应的提交表单新增隐藏字段:

<form method="post" action="{% url 'save_wish' pk=你的商品ID %}">
    {% csrf_token %}
    <input type="hidden" name="from" value="wishlist">
    <!-- 原有爱心按钮代码不变 -->
</form>

后端代码修改

def save_wish(request, pk):
    if request.method == 'POST':
        student = request.user.student
        # 原有业务逻辑保持不变
        from_page = request.POST.get('from')
        # 此处替换为你实际的愿望清单页面路由名称
        return redirect('students:wishlist') if from_page == 'wishlist' else redirect('students:search')
  • 优点:不受浏览器隐私设置影响,跳转逻辑完全可控
  • 缺点:需要调整两个前端页面的表单代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:12:04