【发布时间】:2016-07-14 01:47:02
【问题描述】:
我正在尝试一一显示 Django 表单的各个字段,因为我想更改某些属性。
这是我的 forms.py。为了清楚起见,我已将其缩减为一个字段。
from django import forms
class NameForm(forms.Form):
name = forms.CharField(max_length=100)
如果我完全呈现表单,它会完美运行。我的 HTML 代码 -
<form style="text-align:center; padding-bottom: 2%" action="/contact/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
</form>
上面代码的页面源是这样的——
<p><label for="id_name">Name:</label> <input id="id_name" maxlength="100" name="name" type="text" /></p>
当我尝试使用 {{ form.name }} 而不是 {{form}} 呈现单个字段时,问题就出现了。此页面源显示为空。没有形成 HTML。
我也试过了——
{% for field in form %}
<div class="fieldWrapper">
{{ field }}
</div>
{% endfor %}
为此渲染的 HTML 就像 -
<div class="fieldWrapper">
<
</div>
<div class="fieldWrapper">
p
</div>
<div class="fieldWrapper">
>
</div>
<div class="fieldWrapper">
<
</div>
<div class="fieldWrapper">
l
</div>
<div class="fieldWrapper">
a
</div>
<div class="fieldWrapper">
b
</div>
<div class="fieldWrapper">
e
</div>
<div class="fieldWrapper">
l
</div>
<div class="fieldWrapper">
</div>
<div class="fieldWrapper">
f
</div>
<div class="fieldWrapper">
o
</div>
<div class="fieldWrapper">
r
</div>
<div class="fieldWrapper">
我还没有发布完整的 HTML 源代码,但似乎循环正在打印从表单呈现的 HTML 代码的每个字符,就好像我们将打印的前几个字符组合起来形成 HTML 一样 -
<p><label for>
等等……
请解释为什么会这样。
【问题讨论】:
标签: django django-forms django-templates