从 Django 的 TextArea 小部件中删除标签
Posted
技术标签:
【中文标题】从 Django 的 TextArea 小部件中删除标签【英文标题】:Removing the Label From Django's TextArea Widget 【发布时间】:2010-11-08 00:22:03 【问题描述】:如何删除附加到我尝试与 Django 一起使用的 TextArea 的标签?我正在尝试查找有关此问题的任何信息,但似乎找不到与我的问题有关的任何信息。这就是我在代码中所做的:
class CommentForm(forms.Form):
comment = forms.CharField(widget=forms.Textarea())
这是它生成的 html:
<label for="id_text">Text:</label>
<textarea id="id_text" rows="10" cols="40" name="text"></textarea>
那个标签不好,我想找个办法把它去掉。该代码是通过以下方式生成的:
form.as_p
(我删除了段落标签,因为它们无关紧要)
编辑:我添加了类 CommentForm 部分以进一步澄清。
大家有什么建议吗?
【问题讨论】:
【参考方案1】:这应该适用于 django 的最新版本(主干):
comment = forms.CharField(label="", help_text="", widget=forms.Textarea())
希望有帮助!
【讨论】:
不幸的是,我使用的是 Django 1.0.2,我想这还不能正常工作。 这很奇怪。它不应该是 Django 1.1 的功能(我只是无法轻松验证它在 Django 1.0.2 中是否有效)。<label>
仍然存在,只是空的。 (警告:kludge 传入)完全隐藏它,我也 added a css file to my ModelAdmin 其中包括 label:empty display: none;
【参考方案2】:
Django documentation on customizing labels 表示可以使用 Form 构造函数的 auto_id
参数将其关闭:
f = ContactForm(auto_id=False)
【讨论】:
nvm 我之前的评论,我删除了它,但是这对我仍然没有任何作用,我可能在错误的位置初始化它吗?我是在页面渲染之前在视图中做的。 我不太确定,但我想你可以这样说:class CommentForm(forms.Form): auto_id = False comment = forms.CharField(widget=forms.Textarea())跨度> 好的,看起来这应该是这样做的方法,但是我没有得到任何改变。我会用更多结果更新问题。 确实如此。标签没了。但是,标签的文本部分确实是我想要删除的。不过,这是我提出的问题的正确答案。【参考方案3】:在你的表单中试试这个:
def __init__(self, *args, **kwargs):
self.fields['comment'].label = ''
但对于较新版本的 django,我更喜欢 Iemonad 的回答
【讨论】:
【参考方案4】:不确定旧 Django,但您现在可以为新 Django 清空 Meta 中的表单字段标签
class CustomForm(forms.Form):
class Meta:
... #other properties such as model, fields, widgets and help text
labels =
'comment' : '',
【讨论】:
【参考方案5】:一个快速而简单的解决方案是手动遍历表单(使用 % for field in form %)并专门处理“有问题的”字段。如果需要,您还可以覆盖 as_p/as_table 方法。
【讨论】:
【参考方案6】:这是另一个对我有用的解决方案 有了这个
% for field in form % field.errors % endfor %【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于从 Django 的 TextArea 小部件中删除标签的主要内容,如果未能解决你的问题,请参考以下文章
姜戈。 TemplateDoesNotExist 在自定义小部件的情况下
Dojo Validation TextArea 小部件在无效时如何突出显示?
如何从 Django 模板变量填充 jQuery Datepicker 小部件?