2010-06-21 7 views
14

J'ai une vue simple dans laquelle je sauve un formulaire. le code semble "propre", mais je ne peux pas me débarrasser de l'erreur: "La vue n'a pas retourné un objet HttpResponse." Bien que j'ai cherché sur le web, je n'ai pas trouvé d'indication pertinente.Django "La vue n'a pas renvoyé un objet HttpResponse."

def classroom_privacy(request,classname): 
     theclass = Classroom.objects.get(classname=classname) 
    if request.method == 'POST': 
     form = PrivacyClass(request.POST) 
     if form.is_valid(): 
      new_obj = form.save(commit=False) 
      new_obj.save() 
      return HttpResponseRedirect('.')  
     else: 
      form = PrivacyClass()  
     return render_to_response('classroom/classroom_privacy.html', {'form': form}, 
      context_instance=RequestContext(request)) 

Merci!

+1

La question triviale: Vous envoyez une requête POST? – TooAngel

Répondre

25

vérifier l'empreinte de votre code

def classroom_privacy(request, classname): 
    theclass = Classroom.objects.get(classname=classname) 
    if request.method == 'POST': 
     form = PrivacyClass(request.POST) 
     if form.is_valid(): 
      new_obj = form.save(commit=False) 
      new_obj.save() 
      return HttpResponseRedirect('.') 
    else: 
     form = PrivacyClass() 

    return render_to_response('classroom/classroom_privacy.html', {'form': form}, context_instance=RequestContext(request)) 

si elle est d'obtenir la demande, rendre une forme non liée

si elle est demande après et la forme invalide rendent une forme liée

si elle est post demande et formulaire valide rediriger la page

+0

Absolument correct! – KevinDTimm

+0

vous avez raison. En fait, j'avais un problème d'indentation! Je vous remercie! – dana

+0

Ceci est correct et tout à coup la validation fonctionne maintenant – kta

6

Toutes les fonctions d'affichage doivent renvoyer un type d'objet HttpResponse. Il existe un chemin de code dans votre fonction où None sera renvoyé à la place. Cela se produira quand request.method != 'POST' et vous allez simplement "tomber la fin" de votre fonction (qui retournera None).

+0

oui. tu as raison. mon problème était plus trivial encore, même si je ne pouvais pas voir. j'ai eu un problème d'indentation, et ce 'else' a été interprété comme étant pour le second si. Merci beaucoup pour votre intérêt! :) – dana

Questions connexes