V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zmrenwu
V2EX  ›  Python

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

  •  
  •   zmrenwu · 2016-10-12 17:00:58 +08:00 · 3099 次点击
    这是一个创建于 2997 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    10 条回复    2016-10-14 10:32:45 +08:00
    liuhao2050qq
        1
    liuhao2050qq  
       2016-10-12 21:58:30 +08:00
    我用过一点,当时是公司的某个页面用到了,我遇到了渲染一个 bootstrap 2 和 3 的兼容问题,最后在 Github 上直接查了他的源码看他怎么添加 class 的 然后就解决了。我记得他源码不多,可以很快定位到。当然你也可以 read the fucking doc.
    glasslion
        2
    glasslion  
       2016-10-12 23:02:45 +08:00
    georgema1982
        3
    georgema1982  
       2016-10-13 04:20:50 +08:00
    比如什么默认样式是你不想要的? crispy form 渲染的默认样式一般根本不存在什么问题。所以我不明白你觉得不需要的样式是什么
    zmrenwu
        4
    zmrenwu  
    OP
       2016-10-13 10:55:59 +08:00
    @liuhao2050qq 嗯,看来只有研究下源码了。文档已经读了 5-6 遍了
    zmrenwu
        5
    zmrenwu  
    OP
       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
        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 都是这样的。。
    zmrenwu
        7
    zmrenwu  
    OP
       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
        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
    liuhao2050qq
        9
    liuhao2050qq  
       2016-10-14 09:52:23 +08:00
    @zmrenwu 我就是从 github 上 copy 下来的,链接楼上发了, 3 , 4 都是这样 其他模板也没有看到 row
    首先查一下版本吧,然后看看 review 你的代码。事实上 我觉得这和版本没关系, bootstrap 渲染的时候不会加 row ,因为标准里边 input group 就没有 row 这个 class
    zmrenwu
        10
    zmrenwu  
    OP
       2016-10-14 10:32:45 +08:00
    @georgema1982
    @liuhao2050qq
    谢谢,看了下 issue 列表,最新代码已经修复了这个问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5579 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 03:30 · PVG 11:30 · LAX 19:30 · JFK 22:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.