【问题标题】:I'm getting the following error: view didn't return an HttpResponse object. It returns None instead我收到以下错误:视图没有返回 HttpResponse 对象。它返回 None 而不是
【发布时间】:2017-11-26 01:36:59
【问题描述】:

提交表单后,我收到以下错误:

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,但并非总是能解决。

这是我的 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

【问题讨论】:

    标签: python django


    【解决方案1】:

    请看看你的看法 (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})
    

    【讨论】:

      猜你喜欢
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2017-01-25
      • 2020-12-03
      • 2018-09-28
      • 2017-08-01
      相关资源
      最近更新 更多