在所有视图函数中传递表单的优化方法django

时间:2017-04-18 07:58:04

标签: python django forms

我的 django 项目的所有视图功能都需要form

我有common template用于打印表单但是为此我必须从我的所有视图函数中传递表单。

我有 8个应用。要在我的所有视图函数中包含该表单。此外,表单可以绑定或空白,具体取决于会话值。

如果我写下包含表格的行,我必须写5行。所以我必须将这5行写入我的所有视图函数。有没有办法以更好的方式做到这一点?

forms.py

    class LanguageSelectForm(forms.Form):
        language = forms.ModelChoiceField(empty_label='--Select A Language--', queryset=Language.objects.all(),
                                  widget=forms.Select(attrs={'class': 'form-control'}))
views.py

中的

    form = LanguageSelectForm
        if 'language_id' in request.session:
            form_data = dict()
            form_data['language'] = request.session['language_id']
            form = LanguageSelectForm(form_data)

这些是我必须放在所有视图函数上的5行。

2 个答案:

答案 0 :(得分:2)

如上所述 if seq == (): return False elif item == car(seq): return True return search_sequence(cdr(seq, item)) ,您可以使用@Mubariz Feyziyev在每个模板中呈现表单。这是一种方法。另外,

如果你对context processors使用django表单感到满意:

  • 在客户端使用纯HTML创建表单
  • 将其not值设置为特定网址,例如action
  • 创建一个处理此表单请求的视图,并将其连接到/api/handle-my-nice-form记录(url

如果您是/api/handle-my-nice-form/的新用户,则应使用内置表单。但随着您的应用变得越来越复杂,或者您决定使用像DjangoReact这样的库,建立Angular以处理这类事情可能会更好。

答案 1 :(得分:1)

如果您想在django模板中使用此表单(每个),您必须编写上下文处理器: 请阅读此链接:

https://docs.djangoproject.com/en/1.10/_modules/django/template/context_processors/

https://docs.djangoproject.com/en/1.10/ref/templates/api/#writing-your-own-context-processors