Django 表单在表单字段后添加 <div>
Posted
技术标签:
【中文标题】Django 表单在表单字段后添加 <div>【英文标题】:Django forms adding <div> after form field 【发布时间】:2013-03-15 20:57:09 【问题描述】:下面是我的表单代码:
class FMessage(forms.Form):
From = forms.CharField()
To = forms.CharField()
Subject = forms.CharField()
Message = forms.CharField()
这是我的html代码:
<form method='POST' action='.'>
% csrf_token %
form.as_p
<input type='submit' value='submit'>
</form>
代码通过显示表单工作正常并且在功能上没有任何问题,但现在我需要通过 div
将表单字段包装在 html 中,如下所示:
<div id='mydiv'>
<input ... />
<div>
我该如何解决?
【问题讨论】:
尝试对这个表单域使用自定义的Widget,像这样:***.com/a/7692039/824132 【参考方案1】:似乎您并不想使用内置的<p>
或<table>
包装的表单,而是希望显示包装在<div>'s
中的字段。您可以简单地遍历表单中的字段,如下所示。
% if form %
<!-- Form Errors -->
% if form.errors %
<ul class="errors">
% for error in form.errors %
<li> error </li>
% endfor %
</ul>
% endif %
<!-- Display Form -->
<form>
% csrf_token %
% for field in form %
<div class="mydiv">
<label class="mylabel"> field.label </label>
field
</div>
% endfor %
</form>
% endif %
【讨论】:
好答案。注意:您不需要在 for 循环中使用 csrf_token 标记;建议每张表格一次。 docs.djangoproject.com/en/dev/ref/contrib/csrf. 哎呀,我的错,当然它应该在 for 循环之外。更新了答案。 错误信息不显示...那么我该怎么做才能得到错误信息 感谢您的重播我完成了我的任务...我在 mydiv 中添加了行 field.errors【参考方案2】:不要使用form.as_p
呈现表单。您需要显示表单的每个字段,例如,使用form.to
。通过这种方式,您可以将字段'to'包装到一个div中
<div> form.To </div>
更多详情,请查看link
【讨论】:
嗯 div 问题已解决,但它产生了另一个问题,标签现在丢失了 :(即使在指定之后它也没有标签 ..forms.CharField(label = 'Departure Place'
上述答案的链接包含答案。您需要像这样手动指定标签: form.subject.label_tag
。 docs.djangoproject.com/en/dev/topics/forms/…以上是关于Django 表单在表单字段后添加 <div>的主要内容,如果未能解决你的问题,请参考以下文章
在inlineformset的形式中,我怎么知道哪些是我的默认表单字段,哪些是Django添加的字段?