确实挺方便的,一条代码渲染整个 bootstrap form 表单,但是方便的同时我感觉灵活性不太高。比如它渲染的表单会默认给你加上全部的 bootstrap 样式属性,但是有些是我不想要的,而且在 bootstrap 里面是可选的。它没有给我们提供覆盖的机制,而是在原来基础上增加样式类。所以想请教大家,有办法去掉一些默认的 class 么?
1
liuhao2050qq 2016-10-12 21:58:30 +08:00
我用过一点,当时是公司的某个页面用到了,我遇到了渲染一个 bootstrap 2 和 3 的兼容问题,最后在 Github 上直接查了他的源码看他怎么添加 class 的 然后就解决了。我记得他源码不多,可以很快定位到。当然你也可以 read the fucking doc.
|
2
glasslion 2016-10-12 23:02:45 +08:00
试试 FormHelper.form_class http://django-crispy-forms.readthedocs.io/en/latest/api_helpers.html?highlight=class
|
3
georgema1982 2016-10-13 04:20:50 +08:00
比如什么默认样式是你不想要的? crispy form 渲染的默认样式一般根本不存在什么问题。所以我不明白你觉得不需要的样式是什么
|
4
zmrenwu OP @liuhao2050qq 嗯,看来只有研究下源码了。文档已经读了 5-6 遍了
|
5
zmrenwu OP @georgema1982 比如说 Input 的样式默认渲染为:
<div class="form-group row"> <div classs="control"> <input> <div> <div> 但是这个 row 的 class 在 bootstrap 中会被设置为 -15px 的左右边距。这不是我想要的。所以想怎么把 row 这个 class 去掉。 |
6
liuhao2050qq 2016-10-13 15:49:44 +08:00
{% if inputs %}
<div class="form-group"> {% if label_class %} <div class="aab controls {{ label_class }}"></div> {% endif %} <div class="controls {{ field_class }}"> {% for input in inputs %} {% include "bootstrap3/layout/baseinput.html" %} {% endfor %} </div> </div> {% endif %} 3 和 4 都是这样的。。 |
7
zmrenwu OP @liuhao2050qq 不会吧,我用的最新版 crispy form
{% if inputs %} <div class="form-group row"> {% if label_class %} <div class="aab controls {{ label_class }}"></div> {% endif %} form-group 后面有个 row ,实际渲染出来也是有。 |
8
georgema1982 2016-10-14 01:57:36 +08:00
@zmrenwu 你可以自己看在 github 上最新的代码: https://github.com/django-crispy-forms/django-crispy-forms/blob/dev/crispy_forms/templates/bootstrap3/inputs.html
我使用的是 1.6.0 ,是最近的发行版,也没有看到会渲染 row |
9
liuhao2050qq 2016-10-14 09:52:23 +08:00
@zmrenwu 我就是从 github 上 copy 下来的,链接楼上发了, 3 , 4 都是这样 其他模板也没有看到 row
首先查一下版本吧,然后看看 review 你的代码。事实上 我觉得这和版本没关系, bootstrap 渲染的时候不会加 row ,因为标准里边 input group 就没有 row 这个 class |
10
zmrenwu OP |