2017-06-22 104 views
0

提交我的形式,我發現了以下錯誤後:我收到以下錯誤:視圖沒有返回HttpResponse對象。它返回None而不是

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 

回答

1

請看看你的觀點(record_case)。這裏有三條路徑:

a。 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}) 
相關問題