Django 视图xxx没有';t返回HttpResponse对象。它没有返回任何结果

Django 视图xxx没有';t返回HttpResponse对象。它没有返回任何结果,django,forms,validation,Django,Forms,Validation,我有一个我不理解的错误,因为我在视图中使用的逻辑没有改变,并且适用于我的其他项目。当我阅读Django文档时,我的逻辑观点是: 我们调用表单的is_valid()方法;如果不是真的,我们将返回带有表单的模板。这一次表单不再是空的(未绑定),因此HTML表单将填充以前提交的数据,可以根据需要进行编辑和更正 在我的表单中,我有验证控件。 下面我的clean方法有3个validations控件,并引发了控件#2 forms.py def clean(self): cleaned_

我有一个我不理解的错误,因为我在视图中使用的逻辑没有改变,并且适用于我的其他项目。当我阅读Django文档时,我的逻辑观点是:

我们调用表单的is_valid()方法;如果不是真的,我们将返回带有表单的模板。这一次表单不再是空的(未绑定),因此HTML表单将填充以前提交的数据,可以根据需要进行编辑和更正

在我的表单中,我有验证控件。 下面我的clean方法有3个validations控件,并引发了控件#2

forms.py

   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})