如何在django模板

时间:2016-11-15 09:19:34

标签: python django forms twitter-bootstrap-3

我正在尝试使用django和django-bootstrap3进行表单POST。表单包含以下字段:姓名,电子邮件,电话,公司,主题和消息。模板代码如下。

问题:如果我不想使用表单的所有字段来生成模板,例如只使用名称,电子邮件和电话,如何实现?我想我可以过滤表格,但我不知道该怎么做。

{% load bootstrap3 %}
{% block contact-page %}
<div class="container">
    <div class="center">
        <h2>Drop Your Message</h2>
        <p class="lead">We are looking forward to hearing from you.</p>
    </div>
    <div class="row contact-wrap">
        <div class="status alert alert-success" style="display: none"></div>
        <form action="" method="post" class="form">
            {% bootstrap_form form %}
            {% buttons %}
                <button type="submit" class="btn btn-primary">
                    {% bootstrap_icon "star" %} Submit
                </button>
            {% endbuttons %}
        </form>
    </div><!--/.row-->
</div><!--/.container-->
{% endblock %}}

3 个答案:

答案 0 :(得分:0)

使用django-bootstrap3,您可以使用{% bootstrap_field form.fieldname %}标记仅呈现特定字段。但是,如果某些省略的字段是必需的,那么这可能会导致错误,因为表单会将省略的字段视为空,但仍会将其检查为有效。

清理方法是在表单中省略这些字段。使用Meta.fields中的ModelForm参数或从常规Form中删除字段。

答案 1 :(得分:0)

我能理解你需要什么。您必须添加name, email and phone

想象一下,如果你使用name, email, phone, company, subject, and message,django-bootstrap3提供了一个使用bootstrap_field分别添加字段的选项。

#models.py
class CustomUser(models.Model):
    name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    phone = models.CharField(max_length=100)
    company = models.EmailField(max_length=150)
    subject = models.CharField(max_length=100)
    message = models.CharField(max_length=100)

# template.html
{% load bootstrap3 %}

<form action="" role="form" method="post">{% csrf_token %}
    {% bootstrap_field form.name placeholder='Name' %}
    {% bootstrap_field form.email placeholder='Email' %}
    {% bootstrap_field form.phone placeholder='Phone' %}
    {% buttons submit='OK' reset="Cancel" %}{% endbuttons %}
</form>

我认为你明白了。

答案 2 :(得分:0)

我得到了答案。谢谢蒂姆。

&#13;
&#13;
{% load bootstrap3 %}
{% block contact-page %}
<div class="container">
    <div class="center">
        <h2>Drop Your Message</h2>
        <p class="lead">We are looking forward to hearing from you.</p>
    </div>
    <div class="row contact-wrap">
        <div class="status alert alert-success" style="display: none"></div>
        <form action="" method="post" class="form">
            <!--{% bootstrap_form form %}-->
            <div class="col-sm-5 col-sm-offset-1">
                {% for field in form %}
                    {% if field.name != 'subject' and  field.name != 'message' %}
                    {% bootstrap_field field %}
                    {% endif %}
                {% endfor %}
            </div>
            <div class="col-sm-5">
                {% for field in form %}
                    {% if field.name == 'subject' or  field.name == 'message' %}
                    {% bootstrap_field field %}
                    {% endif %}
                {% endfor %}
                {% buttons %}
                    <button type="submit" class="btn btn-primary">
                        {% bootstrap_icon "star" %} Submit
                    </button>
                {% endbuttons %}
            </div>
        </form>
    </div><!--/.row-->
</div><!--/.container-->
{% endblock %}}
&#13;
&#13;
&#13;