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

如何在Django的同一模板中显示表单内容?附代码示例

没问题,这事儿其实挺简单的,咱们一步步来实现提交表单后在同一模板显示内容:

第一步:修改视图函数(views.py)

首先得让视图能处理表单的POST请求,取出提交的数据并传递给模板。更新你的contact视图如下:

from django.shortcuts import render
from .forms import ContactForm

def contact(request):
    submitted_sujet = None
    if request.method == 'POST':
        # 用POST数据实例化表单
        form = ContactForm(request.POST)
        if form.is_valid():
            # 获取验证后的干净数据
            submitted_sujet = form.cleaned_data['sujet']
            # (可选)如果需要保存到数据库,这里可以加相关逻辑
            # (可选)重置表单,提交后清空输入框
            form = ContactForm()
    else:
        # GET请求时,生成空表单
        form = ContactForm()
    
    # 将表单和提交的数据传递给模板
    return render(request, 'contact.html', {
        'form': form,
        'submitted_sujet': submitted_sujet
    })

第二步:更新模板文件(contact.html)

首先要补上Django表单必须的{% csrf_token %}(不然会触发403权限错误),然后添加一段逻辑,当有提交数据时显示出来:

<form id="myForm" action="{% url 'contact' %}" method="post">
    {% csrf_token %} <!-- 这行一定要加! -->
    {{ form.sujet }}
    <button type="submit">提交</button> <!-- 补充提交按钮,用户才能提交表单 -->
</form>

<!-- 显示提交后的内容 -->
{% if submitted_sujet %}
    <div class="submitted-content">
        <h3>你提交的主题是:</h3>
        <p>{{ submitted_sujet }}</p>
    </div>
{% endif %}

简单说明

  • 当用户第一次访问页面时,是GET请求,submitted_sujet为None,所以不会显示提交内容区域。
  • 用户填写表单并提交后,视图处理POST请求,验证表单有效后把用户输入的sujet内容赋值给submitted_sujet,再传递给模板。模板通过{% if submitted_sujet %}判断,就会渲染出提交的内容。
  • 如果希望提交后保留表单里的输入内容,只需要删掉视图里的form = ContactForm()这一行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:04:07