在Django中如何删除表单自动生成的label标签?
错误原因
你在widget的attrs中设置label参数无效,因为attrs配置的是input控件本身的HTML属性,<label>标签是独立的表单字段级配置,不能通过widget属性修改。
可用解决方法
方法1:在ModelForm的Meta中配置labels
将对应字段的label设为None,可完全避免生成label标签:
class ProfileUpdateForm(forms.ModelForm): class Meta: model = Profile fields = ['user_image'] labels = { 'user_image': None } widgets = { 'user_image': forms.FileInput(attrs={'class': 'image-upload'}), }
方法2:显式定义字段时指定label
手动声明表单字段时直接传入label=None参数:
class ProfileUpdateForm(forms.ModelForm): user_image = forms.FileField( label=None, widget=forms.FileInput(attrs={'class': 'image-upload'}) ) class Meta: model = Profile fields = ['user_image']
方法3:模板层面跳过label渲染
如果仅在当前页面不需要label,无需修改表单代码,模板渲染时只输出控件部分即可:
<!-- 不渲染label,只输出input控件 --> {{ form.user_image }} <!-- 注意:如果用{{ form.as_p }}、{{ form.as_table }}这类全局快捷渲染方法,还是需要用前两种方法修改表单配置 -->
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

