【问题标题】:django-crispy-forms have field and button on same rowdjango-crispy-forms 在同一行上有字段和按钮
【发布时间】:2013-02-07 12:25:39
【问题描述】:

我需要在同一行上有一个带有按钮的引导 PrependedText 字段。我可以在同一行得到它,但它在文本框之前显示按钮,我想要它之后。我在做什么错以及如何让它显示在框之后(在文本字段的右侧)

serial = forms.CharField(forms.TextInput(attrs={'autocomplete':'off',}))
    serial.label = ''

    helper = FormHelper()
    helper.form_class = 'form-horizontal'
    helper.form_action = 'checkout'
    helper.form_method = 'post'

    helper.layout = Layout(
        HTML("<p class='alert-info'>Please scan the items barcode or enter the serial # in the field below.</p>"),
        Div(
            Div(PrependedText('serial', 'Serial #',css_class='input-xlarge'), css_class='span1'),
            Div(Submit('submit','Submit', css_class='btn-primary'), css_class='span1'),
            css_class='row-fluid'
        )
    )

【问题讨论】:

    标签: python django django-crispy-forms


    【解决方案1】:

    首先,我注意到在您对serial 字段的定义中,您忘记将widget= 放在forms.TextInput( 之前。此外,您的 p 也应该有 alert 类,而不仅仅是 alert-info

    我可以通过将span1 的第一个实例更改为span6 来解决这个问题,但我绝对不建议这样做,因为调整窗口大小会导致布局问题,甚至可以让它看起来有根本没有提交按钮!

    我本来打算推荐使用PrependedAppendedText,但the template 假设您正在附加文本而不是按钮,因此除非您覆盖模板(例如PrependedAppendedText.template = 'custom_appended_prepended_text.html'),否则这将不起作用。如果您想走那条路,只需将原始模板复制到您的自定义模板,删除{{ crispy_appended_text|safe }} 的第二个实例所在的span,然后使用如下代码:

    Div(PrependedAppendedText('serial', 'Serial #', '<button class="btn btn-primary">Submit</button>', css_class='input-xlarge'), css_class='span1'),
    

    不过,我确实有另一个建议。我更喜欢这个解决方案,但这意味着放弃前置文本以支持占位符文本。首先,除了将字段的autocomplete 属性设置为off,将其class 属性设置为input-xlarge,并将其placeholder 属性设置为Serial #。接下来,使用此代码:

    FieldWithButtons('serial', StrictButton('Submit', type='submit', css_class='btn-primary')),
    

    无需创建自定义模板。此外,在表单顶部的 p 和字段的占位符文本之间,我认为您的用户不会因为缺少前置文本而感到困惑。

    【讨论】:

    • +1 用于帮助处理警报类以及上述及其他解决方案。我会尝试他们并回来。我尝试将StrictButton 添加到PrependedAppendedText 中,但它只显示了一个空白区域。我将尝试只包含 HTML。
    • 如果做第一个解决方案,我将如何制作模板以便将其部署到 heroku?现在看来我必须编辑包以创建新模板。
    • @Bot 只是一个模板,所以你可以把它放在任何你想要的地方,只要你有一个可以找到它的模板加载器。无需修改 django-crispy-forms。
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2018-02-16
    • 2018-06-17
    • 2012-04-25
    • 1970-01-01
    • 2014-02-10
    • 2019-12-31
    • 2012-12-12
    相关资源
    最近更新 更多