Django Booleanfield Checkbox 和 Label 分两行显示

Posted

技术标签:

【中文标题】Django Booleanfield Checkbox 和 Label 分两行显示【英文标题】:Django Booleanfiedl Checkbox and Label displays in two lines 【发布时间】: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>

【问题讨论】:

【参考方案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 问题。过滤器在这里有点矫枉过正...... 嘿,这仍然是一个有效的解决方案。即使它是矫枉过正,它仍然是解决问题的方法。

以上是关于Django Booleanfield Checkbox 和 Label 分两行显示的主要内容,如果未能解决你的问题,请参考以下文章

自定义包含 django.forms.CheckboxInput() 的 django.forms.BooleanField() 的样式

mysql 的 Django BooleanField 默认值

Django:BooleanField 返回“on”而不是 true?

Django BooleanField 作为单选按钮?

django中关于BooleanField选项的字符串转化

Django model.BooleanField 值为 0/1