フォームテンプレートのさまざまな部分でさまざまなフィールドをレンダリングできるようにしたいクリスピーフォームがありますが、クリスピードキュメントHTML
でこれを行う方法が見つかりません。以下は、私たちがやろうとしていることを説明するために、わずかに作成されたコードです。
フォーム.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 にフィールドを追加することができます。
choice
ただし、オプションがプログラムで決定されるフィールドが多数あるため、これはうまくいかないようです。 crispy.forms.layout.HTML
レイアウトの 2 つの異なる部分を分割する HTML を含むオブジェクトを使用するクリスピーなレイアウトを作成できます。しかし、HTML が多く、これを直接 python に埋め込むと保守が難しくなります。- カスタム レイアウト オブジェクトを作成してこれを行うこともできますが、これは非常に複雑になると予想されるため、これは最後の手段と考えたいと考えています。
- クリスピーを使用せず、代わりにクリスピーの外でこれを実現する方法を探すこともできますが、そうすると、アプリケーション内の他のすべてのフォームとの一貫性が失われます。