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

时间:2014-09-14 23:33:48

标签: python django django-forms django-templates

我有一个表单只显示我不想要的标签文本,我尽我所能让它从我的表单中删除但是它不会只是...

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

3 个答案:

答案 0 :(得分:12)

在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 }}

答案 1 :(得分:5)

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

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

答案 2 :(得分:-1)

只需在窗口小部件中为字段设置一个类,然后按照您的样式添加:

.ClassName label{
    display: none;
}