【问题标题】:Display html form with bound data using django使用 django 显示带有绑定数据的 html 表单
【发布时间】:2012-11-26 08:49:34
【问题描述】:

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

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

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

请提供您的建议?

【问题讨论】:

    标签: python django html django-forms


    【解决方案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 %}
    

    【讨论】:

      【解决方案2】:

      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)
      

      应该可以解决问题。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2020-06-26
          • 1970-01-01
          • 1970-01-01
          • 2011-09-01
          • 2017-01-04
          • 1970-01-01
          • 2020-09-03
          • 2021-06-27
          • 2011-09-12
          相关资源
          最近更新 更多