我正在为我的django项目使用django-crispy-forms,并在文档中阅读我看到,为了能够使用bootstrap 3功能(如水平表单),我需要将bootstrap 3设置为我的crispy模板包,在我的项目的www.example.com中添加以下行settings.py:
CRISPY_TEMPLATE_PACK = 'bootstrap3'
根据文档,crispy的默认配置是bootstrap v2。但是在我的设置中添加了bootstrap 3之后,当我在开发机器上运行我的应用程序时,我得到了这个错误:
TemplateDoesNotExist at /dashboard/
bootstrap3/field.html
Request Method: POST
Request URL: http://localhost:8000/dashboard/
Django Version: 1.7.3
Exception Type: TemplateDoesNotExist
Exception Value:
bootstrap3/field.html
Exception Location: C:\Python27\VirtualEnvs\Tlaloc\lib\site-packages\django\template\loader.py in find_template, line 136
Python Executable: C:\Python27\VirtualEnvs\Tlaloc\Scripts\python.exe
Python Version: 2.7.7
如果我从我的设置中删除CRISPY_TEMPLATE_PACK行(使用默认值)或将其更改为如下所示:
CRISPY_TEMPLATE_PACK = 'bootstrap'
然后我就不会再得到错误了,但是表单水平类在我的表单中不起作用了。
这是我的表单在www.example.com中的样子forms.py
class UserForm(forms.Form):
user = forms.CharField(label='Account', max_length=15)
password = forms.CharField(widget=forms.PasswordInput())
# Crispy forms code
def __init__(self, *args, **kwargs):
super(UserForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_class = 'form-horizontal'
self.helper.label_class = 'col-sm-2'
self.helper.field_class = 'col-sm-10'
self.helper.layout = Layout(
Fieldset(
'',
'user',
'password',
),
Div(FormActions(
Submit('continue', 'Continue', css_class='btn btn-primary'),
Button('cancel', 'Cancel', css_class='btn btn-default',
data_dismiss='modal'),
),
css_class='modal-footer'
)
)
这是我的模板的一部分:
{% load crispy_forms_tags %}
<div class="modal fade" id="adAccountModal" tabindex="-1" role="dialog" aria-labelledby="authenticationLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="authenticationLabel">{{ config_values.environment_name }} Environment Authentication</h4>
</div>
<div class="modal-body">
<p>Please enter the account and password that will be used to authenticate in the selected environment.</p>
{% crispy user_form %}
</div>
{% comment %}
The footer will be added through the user_form using Crispy Forms.
The following code will be just left here as reference.
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary">Continue</button>
</div>
{% endcomment %}
</div>
</div>
</div>
我做错了什么?
3条答案
按热度按时间cidc1ykv1#
结果发现bootstrap3模板目录在我安装的crispy forms中不存在。
我的Windows系统上安装了Crispy Forms 1.3.2版。在github的项目页面中,我看到当前的版本,目前是1.4.0,确实有\crispy_forms\templates\bootstrap3目录。看起来bootstrap3模板包是在这个版本之前引入的,旧版本没有模板包。我升级到当前版本,它现在正在工作。
xurqigkl2#
1.在
settings.py
文件中,包含以下内容:CRISPY_ALLOWED_TEMPLATE_PACKS = ('bootstrap', 'uni_form', 'bootstrap3', 'foundation-5')
1.然后,在
register.html
中编写以下代码:pftdvrlh3#
这个错误发生在我升级基础包时(Django 1.11到Django 3.2,Wagtail 2.0到Wagtail 2.16等)。我通过单独安装crispy_bootstrap3并将其包含在INSTALLED_APPS中来修复它。我还必须设置CRISPY_TEMPLATE_PACK = 'bootstrap 3',这很奇怪,因为我有另一个项目,使用最新版本的Django/Wagtail/Crispy Forms,我不需要做任何事情,我一直认为bootstrap是默认的模板包。听起来有点不确定,但如果你降级请评论。
和