【问题标题】:Django Booleanfiedl Checkbox and Label displays in two linesDjango Booleanfield Checkbox 和 Label 分两行显示
【发布时间】:2017-06-01 18:45:26
【问题描述】:

我有一个 Django 1.8 的注册表单。我要求用户选择“我已阅读并同意使用条款”复选框。问题出在标签和布尔字段复选框位于两行的形式上。例如“条款和条件”第一行、复选框和帮助提示 - 第二行。有什么办法可以将所有内容都集中在一行中:

条款和条件[BooleanField]复选框

forms.py

..... iAgree = forms.BooleanField(label=_("条款和条件"))

addm.html

...

    <p>          
         {{userform.iAgree.label_tag}}
         {{userform.iAgree}}
          <a title="Please accept that you have read the Terms of Use" href="#" class="helpIcon tooltip"><span title="help"></span></a> </label>
    </p>

【问题讨论】:

    标签: python django checkbox


    【解决方案1】:

    其中一些可能是由于您的 HTML 造成的。

    试试这个:

    <p>
        <label>
            {{ userform.iAgree }} {{ userform.iAgree.label }}
        </label>
    </p>
    

    我不确定你想要锚标签在哪里,但由于它是一个内联元素,你可以很容易地将它放在标签本身旁边。

    【讨论】:

    • 我按照你建议的方式试了一下,但还是两行。
    • 您可能希望在浏览器控制台中检查呈现的元素,以确认没有将样式应用于输入。
    • 当我检查它时,它看起来很好。它是模型形式。
    • 等等。为什么标签被渲染两次?您可以发布模板中的代码吗?看起来您使用的是 label_tag 而不是 label
    • 在我看来这是 Django 框架。无论 label 或 label_tag 是什么,它的显示方式都是由框架控制的。不完全确定如何绕过它。
    【解决方案2】:

    根据documentation,您无法做到这一点。但是你可以define your own template filter。即。

    def form_print(value):
        return value + value.label
    

    然后,您可以在模板中使用它。

    {{ userform.iAgree|form_print }}
    

    【讨论】:

    • 这是一个 HTML/CSS 问题,而不是 Python 问题。过滤器在这里有点矫枉过正......
    • 嘿,这仍然是一个有效的解决方案。即使它是矫枉过正,它仍然是解决问题的方法。
    猜你喜欢
    • 2018-03-13
    • 2013-07-06
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2019-01-20
    • 2013-02-28
    相关资源
    最近更新 更多