大家有没有使用过 django-crispy-form?

2016-10-12 17:00:58 +08:00
 zmrenwu

确实挺方便的,一条代码渲染整个 bootstrap form 表单,但是方便的同时我感觉灵活性不太高。比如它渲染的表单会默认给你加上全部的 bootstrap 样式属性,但是有些是我不想要的,而且在 bootstrap 里面是可选的。它没有给我们提供覆盖的机制,而是在原来基础上增加样式类。所以想请教大家,有办法去掉一些默认的 class 么?

2943 次点击
所在节点    Python
10 条回复
liuhao2050qq
2016-10-12 21:58:30 +08:00
我用过一点,当时是公司的某个页面用到了,我遇到了渲染一个 bootstrap 2 和 3 的兼容问题,最后在 Github 上直接查了他的源码看他怎么添加 class 的 然后就解决了。我记得他源码不多,可以很快定位到。当然你也可以 read the fucking doc.
glasslion
2016-10-12 23:02:45 +08:00
georgema1982
2016-10-13 04:20:50 +08:00
比如什么默认样式是你不想要的? crispy form 渲染的默认样式一般根本不存在什么问题。所以我不明白你觉得不需要的样式是什么
zmrenwu
2016-10-13 10:55:59 +08:00
@liuhao2050qq 嗯,看来只有研究下源码了。文档已经读了 5-6 遍了
zmrenwu
2016-10-13 10:58:41 +08:00
@georgema1982 比如说 Input 的样式默认渲染为:
<div class="form-group row">
<div classs="control">
<input>
<div>
<div>

但是这个 row 的 class 在 bootstrap 中会被设置为 -15px 的左右边距。这不是我想要的。所以想怎么把 row 这个 class 去掉。
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 都是这样的。。
zmrenwu
2016-10-13 18:41:58 +08:00
@liuhao2050qq 不会吧,我用的最新版 crispy form
{% if inputs %}
<div class="form-group row">
{% if label_class %}
<div class="aab controls {{ label_class }}"></div>
{% endif %}

form-group 后面有个 row ,实际渲染出来也是有。
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
liuhao2050qq
2016-10-14 09:52:23 +08:00
@zmrenwu 我就是从 github 上 copy 下来的,链接楼上发了, 3 , 4 都是这样 其他模板也没有看到 row
首先查一下版本吧,然后看看 review 你的代码。事实上 我觉得这和版本没关系, bootstrap 渲染的时候不会加 row ,因为标准里边 input group 就没有 row 这个 class
zmrenwu
2016-10-14 10:32:45 +08:00
@georgema1982
@liuhao2050qq
谢谢,看了下 issue 列表,最新代码已经修复了这个问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/312272

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX