【问题标题】:Django Multiple Forms HandlingDjango 多表单处理
【发布时间】:2018-01-07 10:33:13
【问题描述】:

我是 Django 新手,并尝试制作一个包含表单列表并处理它们的视图。我熟悉 django 的通用视图提供的 FormView,但它只包含一个表单。 这个想法是将我拥有的主要表单分成几个表单,然后将“迷你表单”保存在一个列表(“表单”)中。 由于我将表单拆分为多个部分并保存表单列表(出于可重用性等原因),因此模板看起来像这样(这可以解决问题):

...
<form ...>
  {% for form in forms %}
   {{ form.as_p }}
  {% endfor %}
  <input type="submit"...>
</form>
...

我一直在搞乱应该处理表单、验证它们并从中获取数据的视图。因为我觉得我让它变得比它应该的更复杂,所以我想请你举一个简单的例子,我会进一步发展(get

【问题讨论】:

    标签: python django django-forms django-views


    【解决方案1】:

    这可能更像是一条评论,但我没有足够的代表来回复评论,所以我把它放在一个答案中:

    如果您主要关心的是可重用性,您是否考虑过创建 Mixins 而不是制作表单列表? 这方面的一个例子可能是:

    from django import forms
    
    class NameFormMixin(object):
        your_name = forms.CharField(label='Your name')
    
    class EmailFormMixin(object):
        email = forms.EmailField(label='Your Email')
    
    class NameEmailForm(forms.Form,
                        NameFormMixin,
                        EmailFormMixin):
        pass
    

    您可以在 mixins 中包含验证函数,并在主表单类中包含通用 django 表单函数。

    【讨论】:

    • 感谢您的快速回复!我以类似的方式使用mixins,但是当我考虑它时,您建议的方法肯定可以以非常小的通用代码成本使其变得更容易(因为我最初的计划是为每个部分使用一个 ModelForm 更多在我眼里很灵活)。
    猜你喜欢
    • 2021-05-31
    • 2020-12-03
    • 2015-07-04
    • 2010-09-22
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2021-04-14
    相关资源
    最近更新 更多