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

如何在同一HTML页面中单独显示Django表单提交的用户字段值

问题

我希望在同一HTML页面中显示用户提交的表单值,目前已实现显示功能,但内容为Python字典格式(示例:{'first_name': 'Tom', 'last_name': 'Hanks'}),请问如何单独显示名字(First Name)和姓氏(Last Name)?

以下是我的views.py代码:

from django.shortcuts import render
from django import forms

class DbNames(forms.Form):
    first_name = forms.CharField(label="First Name")
    last_name = forms.CharField(label="Last Name")

def index(request):
    return render(request, "emp/index.html")

def form_gen(request):
    form = DbNames()
    if request.method == "POST":
        form = DbNames(request.POST)
        if form.is_valid():
            return render(request, "emp/users.html", { "form_data": form.cleaned_data })
        else:
            print('ERROR')
    return render(request, "emp/users.html", { "result": form })
解决方案

嘿,这个问题很好解决,核心就是要学会在Django模板里直接访问字典的键值对!

form.cleaned_data本质就是一个标准的Python字典,你不需要把整个字典直接输出,而是可以在emp/users.html模板里单独提取每个字段的值:

模板修改示例

把你之前输出整个form_data的代码,替换成下面这样:

{% if form_data %}
  <h2>用户提交的信息</h2>
  <p><strong>First Name:</strong> {{ form_data.first_name }}</p>
  <p><strong>Last Name:</strong> {{ form_data.last_name }}</p>
{% endif %}

{% if result %}
  <!-- 保留你原来的表单渲染逻辑,比如: -->
  <form method="POST">
    {% csrf_token %}
    {{ result.as_p }}
    <button type="submit">提交</button>
  </form>
{% endif %}

这样就能分别展示名字和姓氏,不会再出现字典格式的输出了。

可选:视图层优化(非必需)

如果你想在视图里就把字段单独传给模板,也可以修改form_gen里的返回逻辑:

if form.is_valid():
    cleaned_data = form.cleaned_data
    return render(request, "emp/users.html", {
        "first_name": cleaned_data['first_name'],
        "last_name": cleaned_data['last_name']
    })

之后在模板里直接用{{ first_name }}和{{ last_name }}即可。不过这种方式灵活性稍差,后续如果新增表单字段,还要同步修改视图代码,所以更推荐第一种模板直接取值的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:52:50