Django表单错误占位符
我正在使用Django的模型表单。我的文本输入上有占位符,我希望占位符在出现错误时更改,以指示输入内部的错误,而不是外部的错误。我还没有找到一种方法来覆盖小部件中的模板。我怎样才能做到这一点Django表单错误占位符,django,django-forms,Django,Django Forms,我正在使用Django的模型表单。我的文本输入上有占位符,我希望占位符在出现错误时更改,以指示输入内部的错误,而不是外部的错误。我还没有找到一种方法来覆盖小部件中的模板。我怎样才能做到这一点 class BusinessForm(ModelForm): color = forms.ChoiceField(choices=Business.colors) category = forms.ModelChoiceField( queryset=BusinessCate
class BusinessForm(ModelForm):
color = forms.ChoiceField(choices=Business.colors)
category = forms.ModelChoiceField(
queryset=BusinessCategory.objects.all(),
to_field_name='id',
empty_label='Select Business category'
)
image = forms.ImageField(widget=ImageInput(), required=False)
class Meta:
model = Business
fields = ['name', 'strapline', 'story', 'category', 'color',
'address', 'secondary_address', 'city', 'county', 'postcode',
'phone_number', 'email', 'website', 'image']
widgets = {
'name': forms.TextInput(attrs={'placeholder': 'Business name * Required'}),
'strapline': forms.TextInput(attrs={'placeholder': 'Business strapline'}),
'story': forms.Textarea(attrs={'placeholder': 'Your business story'}),
'address': forms.TextInput(attrs={'placeholder': 'Address 1'}),
'secondary_address': forms.TextInput(attrs={'placeholder': 'Address 2'}),
'city': forms.TextInput(attrs={'placeholder': 'Town/City'}),
'county': forms.TextInput(attrs={'placeholder': 'Country'}),
#'postcode': forms.TextInput(attrs={'placeholder': 'Postcode*', 'ng-blur': 'validatePostCode()', 'ng-model': 'postcode'}),
'postcode': forms.TextInput(attrs={'placeholder': 'Postcode * Required'}),
'phone_number': forms.TextInput(attrs={'placeholder': 'Business phone number * Required'}),
'email': forms.EmailInput(attrs={'placeholder': 'Business email * Required'}),
'website': forms.TextInput(attrs={'placeholder': 'Enter business website e.g. www.mybusiness.co.uk'}),
}
labels = {
'name': 'Business Name',
'strapline': 'Business Strapline',
'story': 'Your Business Story',
'category': 'Select Business category',
'address': 'Address 1',
'secondary_address': 'Address 2',
'city': 'Town/City',
'county': 'Country',
'postcode': 'Postcode*',
'phone_number': 'Business phone number*',
'email': 'Business email*',
'website': 'Business Website',
}
您可以将attrs dict传递给小部件,如果您使用的是常规表单呈现,则将呈现以下内容:
class MyForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'placeholder': _('This is a required value')
})
如果希望只在错误中显示,那么您可能可以在clean_name方法中设置它,尽管这通常不是在clean_*方法中看到的那种
或者,您可以在模板中执行此操作。查看构建django模板的更好方法。您可以将attrs dict传递给小部件,如果您使用的是常规表单呈现,则将呈现以下内容:
class MyForm(forms.Form):
name = forms.CharField(widget=forms.TextInput(attrs={
'placeholder': _('This is a required value')
})
如果希望只在错误中显示,那么您可能可以在clean_name方法中设置它,尽管这通常不是在clean_*方法中看到的那种
或者,您可以在模板中执行此操作。看看构建django模板的更好方法。不要这样做
仅当输入值为空时,才会显示占位符。它可能适用于所需的输入,但不适用于中包含值的输入。在这种情况下,占位符将消失,您不能用错误的输入警告用户
这就是为什么大多数网站在输入字段的下/上/下显示错误
因此,如果您仍然倾向于将错误放在空输入的占位符中,则必须使用Javascript,例如jQuery库
例如,如果用户留下输入模糊效果,您将检查是否需要输入。如果是,且输入为空,则将错误放入占位符属性。不要这样做
仅当输入值为空时,才会显示占位符。它可能适用于所需的输入,但不适用于中包含值的输入。在这种情况下,占位符将消失,您不能用错误的输入警告用户
这就是为什么大多数网站在输入字段的下/上/下显示错误
因此,如果您仍然倾向于将错误放在空输入的占位符中,则必须使用Javascript,例如jQuery库
例如,如果用户留下输入模糊效果,您将检查是否需要输入。如果是,且输入为空,则将错误放入占位符属性。占位符仅在没有字段数据时才会显示。这意味着将在占位符中显示的唯一消息类是丢失的错误。你知道吗?知道。我认为这不应该是一个问题。占位符只会在没有字段数据时显示。这意味着将在占位符中显示的唯一消息类是丢失的错误。你知道吗?知道。我认为这不应该是一个问题。当字段为空时,不会调用clean_something方法,因此这实际上是无用的。我已经有占位符了,我只想在出现错误时更改它们。我也不想引入任何新的包,因为网站已经完成,我的客户只想改变验证工作的方式。我只是想对它做些小小的改动,而不是重新做整个注册过程。哇,轻松点。你知道我是想帮忙,对吗?你的问题几乎没有表明这是一个几乎完整的网站。。。也许你可以换个干净的?或者,如果失败了,直接在视图表单中执行,如果您在CBV中则无效。好的,但我不确定如何更改clean方法中的占位符?我在原始答案中添加了一个表单示例。当字段为空时,不会调用clean_something方法,因此这实际上是无用的。我已经有占位符了,我只想在出现错误时更改它们。我也不想引入任何新的包,因为网站已经完成,我的客户只想改变验证工作的方式。我只是想对它做些小小的改动,而不是重新做整个注册过程。哇,轻松点。你知道我是想帮忙,对吗?你的问题几乎没有表明这是一个几乎完整的网站。。。也许你可以换个干净的?或者,如果失败了,直接在视图表单中执行,如果您在CBV中则无效。好的,但我不确定如何更改clean方法中的占位符?我在原始答案中添加了一个表格示例。最后我这样做了。谢谢你这么做。谢谢