【问题标题】:How to change form design in Django如何在 Django 中更改表单设计
【发布时间】:2016-04-16 01:02:54
【问题描述】:

是否可以在Django 中更改form 的设计?我创建了一个扩展UserCreationFormform,因为我希望user 添加更多数据。

它可以正常工作,但非常难看。我已将模板中的 form.as_p 更改为 form.as_ul 并有所帮助,但正如您所见,这不是应有的方式。

假设我想将每个标签放在它的输入下,或者将标签放在输入窗口中,如facebook 所做的:

Django我怎么能做这种事?

我的代码:

模板:

{% extends 'base.html' %}
{% block content %}
    <form action="" method="post">{% csrf_token %}
        {{ form.as_ul }}
        <input type="submit" value="Create the account">
    </form>
{% enblock %}

表格:

class UserCreationFormExtended(UserCreationForm):
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)
    email = forms.EmailField(required=True)

【问题讨论】:

标签: python django forms django-forms


【解决方案1】:

Django 具有内置库,可以根据您的模型呈现您的表单。 但是,它肯定不适合您的口味,因此您需要使用脆标签添加一些样式。

我建议您使用 django-crispy-forms 并以任何您想要的方式设置表单样式。下面是对 bootstrap5 的 django-crispy-forms 的引用。

https://github.com/django-crispy-forms/crispy-bootstrap5

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是这样的:

    class UserCreationFormExtended(UserCreationForm):
        first_name = forms.CharField(required=True)
        last_name = forms.CharField(required=True)
        email = forms.EmailField(required=True)
    
        class Meta:
             widgets = {
                'first_name': forms.TextInput(attrs={'class': 'form-control'}), # or whatever class you want to apply
                # and so on
             }
    

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 2018-02-18
      • 2015-11-06
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2021-04-22
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多