如何在Djang中将CreateView与crispyforms一起使用

2024-09-27 21:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用CreateView和crispyforms生成的布局。然而,似乎我传递给自我帮助者表单.py被忽略。 表单呈现得很好,但仅使用CreateView生成的字段-传递到Layout的所有字段都丢失。在

我的视图.py在

class MyView(CreateView):
    form_class = MyForm
    model = MyModel

    def form_valid(self, form):
        pass

我的表单.py公司名称:

^{pr2}$

我的形象_表单.html公司名称:

{% load crispy_forms_tags %}
...
<form action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form|crispy }}
</form>

我还应该怎么做才能让它成功呢?在


Tags: pyform名称视图表单公司布局class
3条回答

在:https://groups.google.com/forum/#!topic/django-users/Ovp_FgL3YwY得到答案

不得不改变

{{ form|crispy }}

^{pr2}$

我用不同的方法解决了这个问题。在

我通过以下方式更新了MyView:

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

class MyView(CreateView):
    form_class = MyForm
    model = MyModel
    helper=None

    def form_valid(self, form):
        pass
    def __init__(self, *args, **kwargs):
        super(MyView, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'id-exampleForm'
        self.helper.form_class = 'blueForms'
        self.helper.form_method = 'post'
        self.helper.form_action = 'url_action_call'
        self.helper.add_input(Submit('submit', 'Save', css_class='btn-primary'))

    def get_context_data(self, **kwargs):
        context = super(MyView, self).get_context_data(**kwargs)
        context['helper'] = self.helper
        return context

通过添加以下内容,您可以在模板中显示带有crispy标记的整个表单:

^{pr2}$

我已经做了类似于@user3316785的操作

我的CreateView看起来像:

class CreateDoktrinView(CreateView):
   model = Doktrin
   fields = ['name', 'description']

   def get_form(self, form_class=None):
       form = super().get_form(form_class)
       form.helper = FormHelper()
       form.helper.add_input(Submit('submit', 'Create', css_class='btn-primary'))
       return form

在模板中,我可以简单地使用:

^{pr2}$

相关问题 更多 >

    热门问题