您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django Crispy形式分割字段布局

5b51 2022/1/14 8:23:22 python 字数 3352 阅读 577 来源 www.jb51.cc/python

我们有一个脆弱的表单,我们希望能够在我们的表单 HTML模板的不同部分中呈现不同的字段,但是我们无法在 Crispy Documentation中找到一种这样做的方式.以下是一些稍微补充的代码来说明什么我们正在努力做: forms.py helper = FormHelper() helper.layout_1 = Layout( Div( Field('field_1a'

概述

forms.py

helper = FormHelper()
helper.layout_1 = Layout(
    Div(
        Field('field_1a'),Field('field_1b')
    )
)
helper.layout_2 = Layout(
    Div(
        Field('field_2a'),Field('field_2b')
    )
)

template.html

<body>
    {% crispy form layout_1 %}
    <!-- A big bunch of other html -->
    {% crispy form layout_2 %}
</body>

有没有人知道一个干净的方式实现这一点?

我们迄今为止所看到的方法不得不排除:

>我们可以在我们的HTML中手动添加字段,而不是为我们提供脆弱的字段.然而,这看起来是一个不要走,因为我们有一些选择字段,其选项是以编程方式确定的.
>我们可以写一个脆弱的布局,它使用crispy.forms.layout.HTML对象来包含分割布局的两个不同部分的HTML.然而,有很多HTML,如果我们直接将它嵌入到python中,那将会变得很难维护.
>我们可以写一个Custom Layout Object来为我们做这个,但是我们预测这将是相当牵连的,并且想要考虑这是最后的手段.
>我们不能使用脆性,而是寻找脆弱的方式来实现这一点,但是随后我们将失去与我们应用程序中所有其他形式的一致性.

尝试创建两个帮助程序,而不是两个布局,然后显式调用单独的帮助程序.这样做就必须手动写< form>标签将这两个表单包含在您的模板中,但希望提供您需要的解决方案.

forms.py

class Form(forms.Form):
    field_1a = forms.CharField()
    field_1b = forms.CharField()
    field_2a = forms.CharField()
    field_2b = forms.CharField()

    def __init__(self,*args,**kwargs):
        super(Form,self).__init__(*args,**kwargs)
        helper1 = FormHelper()
        helper1.form_tag = False
        helper1.layout = Layout(
            Div(
                Field('field_1a'),Field('field_1b')
            )
        )

        helper2 = FormHelper()
        helper2.form_tag = False
        helper2.disable_csrf = True
        helper2.layout = Layout(
            Div(
                Field('field_2a'),Field('field_2b')
            )
        )

然后在你的模板中:

<body>
<form>
{% crispy form form.helper1 %}
<!-- A big bunch of other html -->
{% crispy form form.helper2 %}
</form>
</body>

总结

以上是编程之家为你收集整理的python – Django Crispy形式分割字段布局全部内容,希望文章能够帮你解决python – Django Crispy形式分割字段布局所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶