【问题标题】:Django crispy forms inline label and input fieldDjango 脆表单内联标签和输入字段
【发布时间】:2021-07-10 14:14:54
【问题描述】:
我有一个 Django ModelForm,其中包含 3 个字段:姓名、姓氏、电子邮件。我想要的是调整清晰的表单,使每个字段及其标签在一行中,因此表单将如下所示:
Name: <input name>
Lastname: <input lastname>
Email: <input email>
<button Submit>
我尝试使用 FormHelper 和 Layout 以及引导内联属性,但我所做的只是将表单中的所有元素放在一行中。
我的前端真的很差,我被卡住了。
【问题讨论】:
标签:
python
html
django
forms
django-crispy-forms
【解决方案1】:
假设您的 settings.py 包含:
CRISPY_TEMPLATE_PACK = 'bootstrap4'
您可能想要覆盖模板bootstrap4/field.html,该模板将标签和各种可能的输入字段放在一起。
为此,您可以将 Krispy_form 包中的 templates/bootstrap4/field.html 文件复制到您的应用程序中的 templates/bootstrap4/field.html 中,并根据您的需要对其进行修改。当模板引擎渲染表单字段时,它会在原始模板中找到您修改后的field.html。
您可能还想参考模板包uni_form,没有css,它几乎可以按照您想要的方式呈现字段。您可以按原样使用它,也可以从它的结构中获得灵感,以修改您自己的field.html。
【解决方案2】:
我通过简单地将我的 html 代码中的 {{ my_form|crispy }} 更改为 {{ my_form.as_p }} 来实现我的目标。