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

Django表单渲染问题:提交后无法获取内容并在页面展示

解决Django表单提交后页面加载失败+数据展示问题

我来帮你一步步搞定这个问题,咱们先修复视图函数的错误,再实现表单内容在结果页的展示~

一、先修复视图函数的核心错误

你提到点击提交后能跳转但页面无法加载,大概率是视图函数没正确处理POST请求或者返回了错误的响应。这里给你一个标准的视图写法,你可以对照修改:

from django.shortcuts import render

def result(request):
    # 只处理表单提交的POST请求
    if request.method == 'POST':
        # 安全获取表单里的cv内容(用get避免用户没填时报KeyError)
        cv_content = request.POST.get('cv', '')
        # 把数据传到结果页模板,用context字典传递变量
        return render(request, 'cleaner/result.html', {'cv_content': cv_content})
    # 如果是直接访问result页面(GET请求),可以重定向回表单页或者返回空页面
    else:
        return render(request, 'cleaner/form.html')

常见错误排查点:

  • 忘记判断请求方法:如果直接处理GET请求,request.POST是空的,容易引发报错
  • 获取数据方式不安全:用request.POST['cv']会在用户未输入内容时抛出异常,用get()更稳妥
  • 模板路径错误:确保render的第二个参数对应你的模板位置(比如cleaner app的模板要放在templates/cleaner/result.html)
  • 未返回正确响应:比如只处理了逻辑但没返回render或HttpResponse

二、在结果页展示表单内容

修改完视图后,在你的result.html模板里添加以下代码,就能展示用户提交的内容了:

<div class="container">
    <h2>您提交的内容</h2>
    <!-- 用linebreaksbr过滤器把textarea的换行转换成HTML换行标签 -->
    <p>{{ cv_content|linebreaksbr }}</p>
    <!-- 可以加个返回表单的链接,方便用户重新提交 -->
    <a href="{% url 'cleaner:form' %}">返回重新填写</a>
</div>

小技巧:

  • {{ cv_content }}是视图传递过来的模板变量,直接渲染即可
  • |linebreaksbr过滤器能保留用户在textarea里输入的换行格式,不然展示时会变成连续空格
  • 如果需要对内容做格式化处理,还可以用其他Django模板过滤器

三、额外检查项

  • 确认urls.py路由配置正确:比如cleaner app的urls里要有path('result/', views.result, name='result'),主urls.py要包含cleaner的路由
  • 表单里的{% csrf_token %}不能丢(你的代码里已经有了,这点没问题)
  • 如果页面还是加载失败,直接看Django控制台的错误信息——比如TemplateDoesNotExist是模板路径错了,KeyError是获取POST数据时的键名不对,这些提示能快速定位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:25