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

Django表单提交后未重定向问题求助

解决Django表单提交后不重定向的问题

嘿,我之前也碰到过一模一样的情况,咱们一步步来排查解决:

1. 先确认视图里有没有返回重定向响应

从你给出的代码片段来看,大概率是处理完表单数据后没返回redirect()!Django的视图必须返回HttpResponse子类(比如redirect或者render),如果form.is_valid()的分支里只处理了数据但没返回响应,程序会继续往下执行,最后可能默认停留在原页面,导致URL只追加了/submit却没跳转。

修改后的视图示例:

from django.shortcuts import redirect, render

def submit_company_profile(request):
    # 用get避免session里没有status时抛出KeyError,更安全
    if request.session.get('status') == "employer":  
        form = CompanyProfileEdit(request.POST or None)
        if request.method == 'POST' and form.is_valid():
            company_creator_profile_id = request.session['profile_id']
            # 这里处理你的表单数据,比如保存到数据库
            # 示例:如果是ModelForm,直接调用save()
            form.save()
            # 关键!必须返回重定向,替换成你要跳转的页面URL或命名URL
            return redirect('company_profile_success')  
        # GET请求或表单验证失败时,返回表单页面
        return render(request, 'your_form_template.html', {'form': form})
    else:
        # 非雇主用户的处理,比如重定向到登录页
        return redirect('employer_login')

2. 检查表单是否真的通过了验证

有时候表单没通过is_valid()(比如必填字段为空、格式不符合要求),会直接回到表单页面,你可能误以为没提交。可以在模板里添加错误提示,看看具体哪里出了问题:

<form method="POST" action="{% url 'submit_company_profile' %}">
    {% csrf_token %}
    <!-- 显示表单错误提示 -->
    {% if form.errors %}
        <div style="color: #dc3545;">
            {% for field in form %}
                {% for error in field.errors %}
                    <p>{{ field.label }}: {{ error }}</p>
                {% endfor %}
            {% endfor %}
            {% for error in form.non_field_errors %}
                <p>{{ error }}</p>
            {% endfor %}
        </div>
    {% endif %}
    <!-- 你的表单字段 -->
    {{ form.as_p }}
    <button type="submit">提交</button>
</form>

3. 检查Session和权限处理

直接用request.session['status']有风险,如果session里没有这个键会抛出KeyError,导致视图报错,页面无法正常响应。换成request.session.get('status')更稳妥,同时要确保非雇主用户有对应的处理逻辑(比如重定向到登录页)。

4. 确认表单的action和CSRF令牌

  • 模板里的表单必须添加{% csrf_token %},否则Django会拒绝POST请求(返回403错误),表单根本不会被处理。
  • 检查表单的action属性,确保指向正确的视图URL,建议用{% url 'submit_company_profile' %}来生成路径,避免手动写死路径出错。

先按这几个步骤排查,最常见的问题就是忘了加return redirect(),或者表单验证没通过却没显示错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:17