django 模板中的表单字段

Posted

技术标签:

【中文标题】django 模板中的表单字段【英文标题】:Form fields in django templates 【发布时间】: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: form.fields not iterating through instance fields 的可能重复项 【参考方案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 吗?

以上是关于django 模板中的表单字段的主要内容,如果未能解决你的问题,请参考以下文章

仅从模板中的 django 表单中获取一个字段

如何将引导类添加到模板中的 Django CreateView 表单字段?

Django:模板中的 Crispy 表单验证错误

姜戈。从表单对象访问模板中的外键字段

Django模板表单字段以无序方式显示

Django - 表单中的外部字段需要 get_FOO_display