Python 如何将窗体控件添加到Django窗体?

Python 如何将窗体控件添加到Django窗体?,python,django,forms,twitter-bootstrap,Python,Django,Forms,Twitter Bootstrap,我正在尝试将表单控件添加到我为Django制作的表单应用程序中。我已经创建了应用程序,并希望将表单添加到引导模板中,但是我不知道如何为我的电子邮件字段添加引导的更光滑的文本框 我想以类似于此引导模板角落中的登录字段的内容结束(尽管没有密码字段): 我的signup.html文件中的代码如下所示: {% extends 'base.html' %} {% block content %} <div class="col-sm-12"> <for

我正在尝试将表单控件添加到我为Django制作的表单应用程序中。我已经创建了应用程序,并希望将表单添加到引导模板中,但是我不知道如何为我的电子邮件字段添加引导的更光滑的文本框

我想以类似于此引导模板角落中的登录字段的内容结束(尽管没有密码字段):

我的signup.html文件中的代码如下所示:

{% extends 'base.html' %}

{% block content %}
    <div class="col-sm-12">
            <form method='POST' action=''> {% csrf_token %}
                {{ form.as_p }}                       
                <input type='submit' class='btn btn-success btn-lg'>
            </form>
    </div>
{% endblock %}
def __init__(self, *args, **kwargs):
        super(MemberForm, self).__init__(*args, **kwargs)
        for field_name, field in self.fields.items():
            field.widget.attrs['class'] = 'form-control'
{%extends'base.html%}
{%block content%}
{%csrf_令牌%}
{{form.as_p}}
{%endblock%}
上面引导站点的代码如下所示(为了清楚起见,我去掉了密码部分):我不知道如何将django应用程序集成到代码中,以便该站点将注册信息发布到我的数据库

<form class="navbar-form navbar-right" role="form">
  <div class="form-group">
    <input type="text" placeholder="Email" class="form-control">
  </div>
  <button type="submit" class="btn btn-success">Sign in</button>
</form>

登录
如何将两者结合起来?提前感谢。

尝试使用应用程序

{%load bootstrap3%}
{%csrf_令牌%}
{%bootstrap_form layout=“inline”%}
{%buttons%}
签名
{%endbuttons%}

希望这能给你正确的方向。您可以尝试应用程序提供的各种参数来适应您的布局。

作为参考,例如,如果您使用的是
ModelForm
,您只需覆盖表单的
init
方法,如下所示:

{% extends 'base.html' %}

{% block content %}
    <div class="col-sm-12">
            <form method='POST' action=''> {% csrf_token %}
                {{ form.as_p }}                       
                <input type='submit' class='btn btn-success btn-lg'>
            </form>
    </div>
{% endblock %}
def __init__(self, *args, **kwargs):
        super(MemberForm, self).__init__(*args, **kwargs)
        for field_name, field in self.fields.items():
            field.widget.attrs['class'] = 'form-control'

将类作为属性直接添加到表单字段,对我来说似乎是最枯燥的方式

name = forms.CharField(widget=forms.TextInput(attrs={"class":"form-control"}))

message = forms.CharField(widget=forms.Textarea(attrs={"class":"form-control"}))
这样,您就不需要在其他任何地方编辑任何内容。您可以通过这种方式向特定字段添加任意数量的类

def __init__(self, *args, **kwargs):
    super(YourModelForm, self).__init__(*args, **kwargs)
    for field_name, field in self.fields.items():
        if field.widget.attrs.get('class'):
            field.widget.attrs['class'] += ' form-control'
        else:
            field.widget.attrs['class']='form-control'

不会覆盖给定的类属性

可以这样添加表单字段:{{Form.email | add_class:“表单控制”| attr:“占位符:email”| attr:“type:text”}代替{{Form.as|p}小心,因为这会覆盖任何给定的类属性!