如何在 Django 生成的表单中删除标签文本?

Posted

技术标签:

【中文标题】如何在 Django 生成的表单中删除标签文本?【英文标题】:How do I remove Label text in Django generated form? 【发布时间】:2014-11-08 10:45:27 【问题描述】:

我有一个表单,它只针对我不想要的标签文本显示良好,我已尽我所能将其从我的表单中删除,但它不会消失...

forms.py

class sign_up_form(forms.ModelForm):
    class Meta:
        model = Users
        fields =['email']
        widgets = 
            'email': forms.EmailInput(attrs=
                'id': 'email',
                'class': 'form-control input-lg emailAddress',
                'name': 'email',
                'placeholder': 'Enter a valid email')

我尝试过: views.py

from django.shortcuts import render
from mysite.forms import sign_up_form

def register(request):
    sign_up = sign_up_form(auto_id=False)
    context = 'sign_up_form': sign_up
    return render(request, 'mysite/register.html', context)

我需要上面定义的widgets

【问题讨论】:

你是如何渲染表单的? 您是否尝试将label: '' 添加到attrs 【参考方案1】:

在 ModelForms 中会有默认标签,因此您必须在不需要标签的地方覆盖

你可以这样定义

class sign_up_form(forms.ModelForm):
    email = forms.CharField(widget=forms.Textarea, label='')
    class Meta:
        model = Users
        fields =['email']

此方法不会包含表单的标签,其他方法取决于在模板中呈现。您总是可以避免形式上的标签 <label>MY LABEL</label> 而不是 form.field.label

【讨论】:

【参考方案2】:

__init__ 方法中将您的字段标签设置为空。这将删除标签文本。

def __init__(self, *args, **kwargs):
        super(sign_up_form, self).__init__(*args, **kwargs)
        self.fields['email'].label = ""

【讨论】:

以上是关于如何在 Django 生成的表单中删除标签文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建标签文本框,如 html 标签(在 ms 访问表单中)

删除 Django Crispy 表单中的标签

在Django中的文本字段上禁用自动完成?

如何从控件中获取标签文本?

如何覆盖 django-redux 默认用户注册表单

在 Django 中的表单标签中解析 forloop.counter