Django 视图xxx没有';t返回HttpResponse对象。它没有返回任何结果
我有一个我不理解的错误,因为我在视图中使用的逻辑没有改变,并且适用于我的其他项目。当我阅读Django文档时,我的逻辑观点是: 我们调用表单的is_valid()方法;如果不是真的,我们将返回带有表单的模板。这一次表单不再是空的(未绑定),因此HTML表单将填充以前提交的数据,可以根据需要进行编辑和更正 在我的表单中,我有验证控件。 下面我的clean方法有3个validations控件,并引发了控件#2 forms.pyDjango 视图xxx没有';t返回HttpResponse对象。它没有返回任何结果,django,forms,validation,Django,Forms,Validation,我有一个我不理解的错误,因为我在视图中使用的逻辑没有改变,并且适用于我的其他项目。当我阅读Django文档时,我的逻辑观点是: 我们调用表单的is_valid()方法;如果不是真的,我们将返回带有表单的模板。这一次表单不再是空的(未绑定),因此HTML表单将填充以前提交的数据,可以根据需要进行编辑和更正 在我的表单中,我有验证控件。 下面我的clean方法有3个validations控件,并引发了控件#2 forms.py def clean(self): cleaned_
def clean(self):
cleaned_data = super(RandomizationEditForm, self).clean()
# control #1
if Randomisation.objects.filter(pat=self.data.get('pat').upper()).exists():
bras = Randomisation.objects.get(pat=self.data.get('pat').upper()).bra_lib
raise forms.ValidationError("Ce patient a déjà été randomisé dans le bras " + bras + ". Veuillez vérifier votre saisie.")
# control #2
if Pays.objects.get(pay_abr=self.data.get('pat').upper()[0:2]).pay_ide != int(self.data.get('pay_ide')):
raise forms.ValidationError("Ce patient ne peut être randomisé dans ce site. Veuillez vérifier votre saisie.")
# control #3
if not patient_code_is_valid(self.data.get('pat').upper()):
raise forms.ValidationError("Il y a incohérence entre le site et le pays dans le numéro patient. Veuillez vérifier votre saisie.")
return cleaned_data
如果您发出POST请求,并且表单无效,则不会返回任何结果。在这种情况下,通常会使用包含错误的表单重新提交模板:
def randomization_edit(request):
if request.method == 'POST':
form = RandomizationEditForm(request, data=request.POST)
if form.is_valid():
return redirect('randomization:confirmation', pk=randomisation.pk)
else:
if not request.session.get('user_can_randomize'):
return redirect("home")
else:
form = RandomizationEditForm(request)
return render(request, 'randomization/edit.html', {'form': form})
def随机化\u编辑(请求):
如果request.method==“POST”:
form=RandomizationEditForm(请求,数据=request.POST)
如果form.is_有效():
返回重定向('randomization:confirmation',pk=randomization.pk)
其他:
如果不是request.session.get('user\u can\u randomize'):
返回重定向(“主页”)
其他:
表单=随机化编辑表单(请求)
返回呈现(请求'randomization/edit.html',{'form':form})
因此,return render(…)
将返回一个HTTP响应,如果它是一个带有用户的GET requjest,\u可以随机化会话的值,或者如果您发出POST请求,并且from无效
def clean(self):
cleaned_data = super(RandomizationEditForm, self).clean()
# control #1
if Randomisation.objects.filter(pat=self.data.get('pat').upper()).exists():
bras = Randomisation.objects.get(pat=self.data.get('pat').upper()).bra_lib
raise forms.ValidationError("Ce patient a déjà été randomisé dans le bras " + bras + ". Veuillez vérifier votre saisie.")
# control #2
if Pays.objects.get(pay_abr=self.data.get('pat').upper()[0:2]).pay_ide != int(self.data.get('pay_ide')):
raise forms.ValidationError("Ce patient ne peut être randomisé dans ce site. Veuillez vérifier votre saisie.")
# control #3
if not patient_code_is_valid(self.data.get('pat').upper()):
raise forms.ValidationError("Il y a incohérence entre le site et le pays dans le numéro patient. Veuillez vérifier votre saisie.")
return cleaned_data
def randomization_edit(request):
if request.method == 'POST':
form = RandomizationEditForm(request, data=request.POST)
if form.is_valid():
return redirect('randomization:confirmation', pk=randomisation.pk)
else:
if not request.session.get('user_can_randomize'):
return redirect("home")
else:
form = RandomizationEditForm(request)
return render(request, 'randomization/edit.html', {'form': form})