我使用 Bootstrap和 Django 来渲染表单。
Bootstrap
可以很好地格式化表单——只要你有它期望包含的 CSS
类。
但是,我的问题是 Django 的 {{ form.as_p }}
生成的表单不能很好地用 Bootstrap 呈现,因为它们没有这些类。
例如,Django 的输出:
<form class="horizontal-form" action="/contact/" method="post">
<div style='display:none'>
<input type='hidden' name='csrfmiddlewaretoken'
value='26c39ab41e38cf6061367750ea8c2ea8'/>
</div>
<p><label for="id_name">Name:</label> <input id="id_name" type="text" name="name" value="FOOBAR" maxlength="20" /></p>
<p><label for="id_directory">Directory:</label> <input id="id_directory" type="text" name="directory" value="FOOBAR" maxlength="60" /></p>
<p><label for="id_comment">Comment:</label> <textarea id="id_comment" rows="10" cols="40" name="comment">Lorem ipsum dolor sic amet.</textarea></p>
<p>
<label for="id_server">Server:</label>
<select name="server" id="id_server">
<option value="">---------</option>
<option value="1"
selected="selected">sydeqexcd01.au.db.com</option>
<option value="2">server1</option>
<option value="3">server2</option>
<option value="4">server3</option>
</select>
</p>
<input type="submit" value="Submit" />
</form>
据我所知,Bootstrap 要求你的表单有一个 <fieldset class="control-group">
,每个 <label>
有一个 class="control-label"
,并且每个 <input>
都包装在一个 <div>
中:
<fieldset class="control-group">
<label class="control-label" for="input01">Text input</label>
<div class="controls">
<input type="text" class="xlarge" name="input01">
<p class="help-text">Help text here. Be sure to fill this out like so, or else!</p>
</div>
</fieldset>
然而,将自定义 CSS 标签添加到 Django 中的每个表单字段是相当痛苦的:
将类添加到 Django label _ tag () output
有没有一种更聪明的方法,既可以使用 {{ form.as_p }}
,也可以迭代这些字段,而不必手动指定内容,或者进行大量的黑客操作?
干杯, 维克多