我有一个django应用程序,在那里我使用带有表单的身份验证系统。我是按照这个教程来做的。
<div class="panel panel-default">
{% if registered %}
<strong>Thank you for registering!</strong>
<a href="/lms/">Return to the homepage.</a><br />
{% else %}
<strong><h3>Register here!</h3></strong><br />
<form id="user_form" method="post" action="/lms/register/" enctype="multipart/form-data">
{% csrf_token %}
{{ user_form.as_p }}
{{ profile_form.as_p }}
<input type="submit" name="submit" class="btn btn-primary" value="Register" />
</form>
{% endif %}
</div>
现在我正试图将这些表单添加到引导程序标签中。但是,既然它将表单的所有元素都放在一个声明中,我该如何使用bootstrap使这些标签显示出来?
您不必在单个语句中输出模板中的表单。你可以做一些类似的事情:
{% for field in user_form %}
<p class="some-bootstrapclass">{{ field.label_tag }}{{ field }}</p>
{% endfor %}
这是一个非常简单的例子。
然而,我强烈建议你看看脆的形式:
http://django-crispy-forms.readthedocs.org
使用脆皮表单,您可以在forms.py中设置所有内容,并且仍然在模板中的单个语句中输出表单,例如:
{% load crispy_forms_tags %}
{% crispy user_form %}
您可以使用特定的字段名称,而不是使用.as_p。例如,假设您有username和age字段。因此,它将像这个
{{ user_form.username }}
{{ user_form.age }}
希望它能有所帮助:)
这里的答案非常好,我已经成功地使用了Django Crispy表单(在Two Scoops中推荐)和其他库,如django-bootstrap
。但如果需要另一个选项,我会使用表单来调整字段:
class UserAuthenticationForm(LoginForm):
username = forms.CharField(
max_length=30,
widget=forms.TextInput(
attrs={
'class': 'form-control',
'name': 'username',
'placeholder': 'Username',
'autofocus': 'autofocus',
}
)
)
构建出您想要的所有字段。这样可以更好地控制表单的外观。然后,对于模板:
<form class="login" method="post" action="{% url 'account_login' %}">
{% csrf_token %}
{{ form }}
. . .
{# add errors, etc... #}
<button class="btn btn-lg btn-primary" type="submit">
{% trans "Log in" %}
</button>
</form>
如果需要,也可以覆盖视图。。。