【问题标题】:Removing the Label From Django's TextArea Widget从 Django 的 TextArea 小部件中删除标签
【发布时间】: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 部分以进一步澄清。

大家有什么建议吗?

【问题讨论】:

    标签: python django textarea label widget


    【解决方案1】:

    这应该适用于 django 的最新版本(主干):

    comment = forms.CharField(label="", help_text="", widget=forms.Textarea())
    

    希望有帮助!

    【讨论】:

    • 不幸的是,我使用的是 Django 1.0.2,我想这还不能正常工作。
    • 这很奇怪。它不应该是 Django 1.1 的功能(我只是无法轻松验证它在 Django 1.0.2 中是否有效)。
    • &lt;label&gt; 仍然存在,只是空的。 (警告: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
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-08
          • 1970-01-01
          • 1970-01-01
          • 2015-09-11
          • 1970-01-01
          • 2014-10-15
          相关资源
          最近更新 更多