gpt4 book ai didi

python - 增强 is_valid() 但有异常

转载 作者:行者123 更新时间:2023-11-30 23:45:57 27 4
gpt4 key购买 nike

我有一个 django charField,通过 is_valid() 方法进行检查。用户应该在此字段中输入有效的逻辑表达式,因此我编写了一个解析方法,如果表达式不正确,该方法会引发异常。

如何增强 is_valid() 方法来覆盖此异常并向用户显示一条错误消息,表明其查询错误?

我读了这篇文章(https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute),但仍然不知道该怎么做。

        try:
job = Job(user=request.user) # set the current user
form = JobForm(request.POST, instance=job)

if form.is_valid():
form.save()
job.execute()
messages.success(request, u'A new job with the query "{query}" was created.'.format(query=job.query))
return HttpResponseRedirect(reverse('job-index'))

return self.render_to_response({'job_form': form, 'is_new': True})
except ParseError:
return self.render_to_response({'job_form': form, 'is_new': True})

try... except-Block 应该在 is_valid() 方法内完成,这是我的意图。有人有任何提示吗?

最佳答案

您自己已经提供了问题的答案 - 您 create your own form (or model form)perform custom validation使用其 clean_'fieldname'() 方法对该表单的字段进行处理。例如,假设您的模型是:

class Job(models.Model):
expression_field = models.CharField(...)
...

您创建一个forms.py:

class JobForm(forms.ModelForm):
pass
class Meta:
model = Job

def clean_expression_field(self):
# You perform your custom validation on this field in here,
# raising any problems
value = self.cleaned_data['expression_field']
if value is 'really_bad':
raise forms.ValidationError("bad bad bad")
return value

然后在您的 views.py 中使用它,就像您在示例中一样。现在,如果用户输入的值不符合您的标准,则会自动引发异常

关于python - 增强 is_valid() 但有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com