【问题标题】:Form fields in django templatesdjango 模板中的表单字段
【发布时间】:2013-07-17 20:35:34
【问题描述】:

我有一个类似下面的表格

class Form(forms.Form):
   chr1 = forms.CharField(widget=forms.TextInput())
   email = forms.EmailField()
   chr2 = forms.CharField()

而我的视图代码是这样的

def template(request):
    form = Form({})
    return render(request, 'mytemplate.html', {'form': form})

我的模板是这样的

{% for field in form.fields %}
{{ field.label_tag }}: {{ field }}
{% endfor %}

我希望这会输出一组输入字段。但是上面的 sn-p 给出的输出如下所示

: chr1
: email
: chr2 

【问题讨论】:

标签: django django-forms django-templates django-views


【解决方案1】:

根据文档here,您应该迭代表单对象本身而不是字段。所以不要使用form.fields,而是使用form。

{% for field in form %}
    {{ field.label_tag }}: {{ field }}
{% endfor %}

我也发现了这个重复的问题:django: form.fields not iterating through instance fields

【讨论】:

  • 谢谢。这样可行。有没有办法我可以只使用字段而不使用表单,包括模板和视图?当我尝试从视图中传递一个字段并直接在模板中使用它时,我得到了<django.forms.fields.CharField object at 0x02A8B030>
  • 我的要求是动态添加表单字段,而不是一组固定的字段。
  • 不确定我是否完全理解您的意思...但是您看过 FormSets 吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-02
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2021-03-13
  • 2020-04-25
  • 1970-01-01
相关资源
最近更新 更多