0

我有 django 表单,但是在我的 HTML 中,我添加了一个额外的输入字段(直接添加到 html 页面中),我可以在我的 django 视图中使用 request.POST.get('extra_field_name') 访问它。

如果 form.is_valid() 为假,我可以将表单作为 HTML 格式获取,数据显示在 HTML 中,但额外添加的字段为空值(直接添加到 html 页面中)

在验证结果之后,如何获取这个新添加的额外 html 字段的有界表单数据。

请提供您的建议?

4

3 回答 3

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 %}
于 2012-11-26T09:19:59.370 回答
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)

应该做的伎俩。

于 2012-11-26T08:58:41.560 回答
0

老实说,最好的方法是让您的基本 django 表单处理额外的字段。不使用 html 中的额外字段。但是,如果您不能/不想要,如 xbello 所述,在http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/中,您可以使用各种技巧来处理动态字段。

我发现使用表单工厂方法更健壮。一个生成动态表单的函数,为未来的更多变化做好准备。不过,你必须决定最好的方法:-)

于 2012-11-26T17:35:03.447 回答