我得到以下错误:视图没有返回HttpResponse对象。它将返回None

2024-04-25 12:12:20 发布

您现在位置:Python中文网/ 问答频道 /正文

提交表单后,出现以下错误:

The view papa.views.record_case didn't return an HttpResponse object. It returned None instead.

我尝试了以下解决方案view didn't return a response objectthe solution explained here,但并不总是解决

以下是my view.py代码:

def record_case(request):
    if request.method=="GET":
        form=EnfantForm()
        context={
            "form":form,
        }
        return render(request,"papa/enfant.html",context)
    elif request.method=="POST":
        form=EnfantForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('papa:record_case'))

这是我的model.py文件:

SEXE_CHOICES = (
    (0, 'M'),
    (1, 'F'),
)

class Maladie(models.Model):
    nom=models.CharField(max_length=50)

    def __str__(self):
        return self.nom


class Traitement(models.Model):
    code=models.CharField(primary_key=True,max_length=25,verbose_name="Code du traitement")
    nom=models.CharField(max_length=200,verbose_name="Nom du traitement")
    maladie=models.ForeignKey(Maladie,on_delete=models.CASCADE)
    age=models.ForeignKey("Age",on_delete=models.CASCADE)

    def __str__(self):
        return self.code


class Age(models.Model):
    tranche=models.CharField(max_length=100)

    def __str__(self):
        return self.tranche

class Enfant(models.Model):
    sexe=models.CharField(max_length=1,choices=SEXE_CHOICES)
    poid=models.FloatField()
    age=models.ForeignKey(Age,on_delete=models.CASCADE)
    maladie=models.ManyToManyField(Maladie)


    def __str__(self):
        return self.sexe

Tags: selfformviewmodelreturnmodelsrequestdef
1条回答
网友
1楼 · 发布于 2024-04-25 12:12:20

请查看您的视图(record_case)。这里有三条路径:

答。HTTP GET

b。具有有效表单的HTTP POST

c。格式无效的HTTP POST

在第三种情况下,不返回任何内容,因此None被返回。所以你才会出错。要解决此问题,您需要再次返回带有传递数据的表单,如下所示:

def record_case(request):
    if request.method=="GET":
        form=EnfantForm()
        context={
            "form":form,
        }
        return render(request,"papa/enfant.html",context)
    elif request.method=="POST":
        form=EnfantForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('papa:record_case'))
        else:
            # POST with an invalid form
            return render(request,"papa/enfant.html", {'form': form})

相关问题 更多 >