如何正确验证 Django 通用视图中的用户条目
How to correctly Validate user entry in Django Generic Views
在我的 Django 应用程序中,我试图验证用户输入的表单字段值。我正在尝试在 Django generic UpdateView
中进行验证(我将在下面解释)。 extant字段存储交易单据的各种状态。 status 的更改发生在更新时(用户手动输入状态代码或基于交易的特定阶段等 - 此处不重要).
重要的是 save
文档的状态需要更改。由于有许多状态,每个状态都被赋予了一个数值。无论在何处手动输入状态,都需要检查当前 status 值是否比输入值 less。如果不是,用户应该收到一条 错误消息 。
我的 views.py 看起来像这样:
class ProdDocView(UpdateView, ...):
template_name = ...
model = ProdLine
form_class = ProdLineForm
...
def form_valid(self, form):
tmp_status = ProdLine.objects.get(prod_doc_id=self.object.pk).prod_doc_status
new_status_entered = form.cleaned_data['prod_doc_status']
if tmp_status == new_status_entered: # This is just to check error capture
# raise ValidationError('Wrong status code entered!!')
return super(ProdDocView, self).form_invalid(form)
else:
form.instance.approved_by = self.request.user. # This is to save user field on successful save
return super().form_valid(form)
现在发生的事情是,错误陷阱发生了——即如果之前的状态与输入的状态相匹配,则保存失败。 但没有显示任何错误信息。如果状态为不等,文档成功保存。
如您所见,raise ValidationError('Wrong status code entered!!')
代码行已被注释掉,否则表单将失败并在浏览器中显示错误(带有错误消息)。
我的问题是:
如何将错误显示给前端用户?
为了结束这个问题,我转载我上面的评论:
我只需要添加以下内容:
form.add_error('prod_doc_status', 'Wrong status code entered!!')
有了这个,错误消息就会显示在字段上。
在我的 Django 应用程序中,我试图验证用户输入的表单字段值。我正在尝试在 Django generic UpdateView
中进行验证(我将在下面解释)。 extant字段存储交易单据的各种状态。 status 的更改发生在更新时(用户手动输入状态代码或基于交易的特定阶段等 - 此处不重要).
重要的是 save
文档的状态需要更改。由于有许多状态,每个状态都被赋予了一个数值。无论在何处手动输入状态,都需要检查当前 status 值是否比输入值 less。如果不是,用户应该收到一条 错误消息 。
我的 views.py 看起来像这样:
class ProdDocView(UpdateView, ...):
template_name = ...
model = ProdLine
form_class = ProdLineForm
...
def form_valid(self, form):
tmp_status = ProdLine.objects.get(prod_doc_id=self.object.pk).prod_doc_status
new_status_entered = form.cleaned_data['prod_doc_status']
if tmp_status == new_status_entered: # This is just to check error capture
# raise ValidationError('Wrong status code entered!!')
return super(ProdDocView, self).form_invalid(form)
else:
form.instance.approved_by = self.request.user. # This is to save user field on successful save
return super().form_valid(form)
现在发生的事情是,错误陷阱发生了——即如果之前的状态与输入的状态相匹配,则保存失败。 但没有显示任何错误信息。如果状态为不等,文档成功保存。
如您所见,raise ValidationError('Wrong status code entered!!')
代码行已被注释掉,否则表单将失败并在浏览器中显示错误(带有错误消息)。
我的问题是:
如何将错误显示给前端用户?
为了结束这个问题,我转载我上面的评论:
我只需要添加以下内容:
form.add_error('prod_doc_status', 'Wrong status code entered!!')
有了这个,错误消息就会显示在字段上。