4

我正在使用DjangowithCrispyForms并将我的一个旧项目更新为BS3.

我唯一不知道如何适应的是form-horizontal。我的表格过去看起来像这样:

在此处输入图像描述

现在标签总是在输入的顶部——就像以前一样form-vertical

我在 Stack 上阅读了一些帖子,在 Google 上四处搜索,但没有人为我提供有效的清晰答案!

最奇怪的是,Bootstrap 的人说他们没有更改或删除这个类。

有什么想法可以让我的旧的、可爱的水平`表格恢复原状吗?

谢谢!

更新:

CrispyFormsbootstrap3即使使用模板包,也会产生以下内容:

<div class="form-group" id="div_id_title">
    <label class="control-label  requiredField" for="id_title">Titel
        <span class="asteriskField">*</span>
    </label>
    <div class="controls ">
        <input type="text" name="title" maxlength="65" id="id_title" class="textinput textInput form-control"> 
    </div>
</div>
4

3 回答 3

4

看看这里:

http://django-crispy-forms.readthedocs.org/en/latest/crispy_tag_forms.html#bootstrap3-horizo​​ntal-forms

你应该添加

helper.label_class = 'col-lg-x' #for example 'col-lg-2'
helper.field_class = 'col-lg-x' #for example 'col-lg-10'

BS3 有一个 12 列的网格系统,更多信息在这里 http://getbootstrap.com/css/#grid

这使表格水平,但不幸的是标签向左对齐,我现在正在尝试解决这个问题。

更新:如果字段之间的垂直间距有问题,请在每个字段的外部 div 中添加一个行 css 类,html 输出:

<div class="form-group row" id="div_id_title">

    ###labels HTML###

</div>

可能是 bootstrap3 的 field.html 模板上的错误。

于 2014-01-15T06:53:05.997 回答
3

Did you put the form-control inside form-group?

<form class="form-horizontal" role="form">
<div class="form-group">
    <label lass="col-sm-2 control-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword" placeholder="Password">
    </div>
</div>..
</form>

Demo: http://bootply.com/104095

于 2014-01-06T18:29:56.157 回答
3

我花了几个小时试图弄清楚这一点。对我来说,这行得通。您必须进入项目 settings.py 并添加以下行:

CRISPY_TEMPLATE_PACK = 'bootstrap3'

通过文档搜索后,我最终发现我必须在crispy-forms 源代码本身中执行此操作:

       if (
            TEMPLATE_PACK == 'bootstrap3'
            and not is_checkbox(field)
            and not is_file(field)
        ):
            css_class += ' form-control'
于 2014-11-12T18:58:50.710 回答