我有django表单,但在我的HTML中我添加了一个额外的输入字段(直接添加到html页面中),我可以使用request.POST.get('extra_field_name')在我的django视图中访问它。
如果form.is_valid()为false,我可以将表单作为HTML获取,数据显示在HTML 中,但是额外添加的字段为空值(直接添加到html页面中)
如何在验证后获取此新添加的额外html字段的有界表单数据。
请提供您的建议?
答案 0 :(得分:1)
查看:
html_added_field = ''
error_added_field = None
if request.method == 'POST':
html_added_field = request.POST.get('extra_field_name')\
if form.is_valid():
pass
else:
error_added_field = _('Error')
context = {'html_added_field':html_added_field,'error_added_field':error_added_field}
HTML:
<input type="text" value="{{ html_added_field }}" />{% if error_added_field %}<div class="error">{{ error_added_field }}</div>{% endif %}
答案 1 :(得分:0)
Bennett的这篇文章可能会对你有所帮助。
http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/
简而言之,您必须覆盖表单的__init__
方法,并在其中添加新的“extra_field_name”。这些字段包含在self.fields列表中,所以这样做:
self.fields['extra_field_name'] = forms.CharField(put_here_definitions_for_your_field)
应该这样做。
答案 2 :(得分:0)
老实说,最好的方法是让你的基础django表单处理额外的字段。不使用html中的额外字段。但是,如果您不能/不希望,正如xbello所说,在http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/中,您有各种技巧来处理动态字段。
我发现使用表单工厂方法更加健壮。一种生成动态表单的函数,为将来的更改做好准备。不过,你必须决定最好的方法: - )