Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django表单错误占位符_Django_Django Forms - Fatal编程技术网

Django表单错误占位符

Django表单错误占位符,django,django-forms,Django,Django Forms,我正在使用Django的模型表单。我的文本输入上有占位符,我希望占位符在出现错误时更改,以指示输入内部的错误,而不是外部的错误。我还没有找到一种方法来覆盖小部件中的模板。我怎样才能做到这一点 class BusinessForm(ModelForm): color = forms.ChoiceField(choices=Business.colors) category = forms.ModelChoiceField( queryset=BusinessCate

我正在使用Django的模型表单。我的文本输入上有占位符,我希望占位符在出现错误时更改,以指示输入内部的错误,而不是外部的错误。我还没有找到一种方法来覆盖小部件中的模板。我怎样才能做到这一点

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方法中的占位符?我在原始答案中添加了一个表格示例。最后我这样做了。谢谢你这么做。谢谢