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

Yax*_*Yax 8 python django django-templates django-forms

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

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'})}
Run Code Online (Sandbox Code Playgroud)

我试过了: 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)
Run Code Online (Sandbox Code Playgroud)

我需要我的widgets定义如上.

小智 15

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

你可以像这样定义它

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

此方法不包含表单的标签,其他方法取决于模板中的呈现.您始终可以避免使用表单中的标签 <label>MY LABEL</label>而不是{{ form.field.label }}


小智 6

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

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