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 默认值