2012-10-26 3 views
2

장고 양식을 사용했습니다. 나는 views.py이 기능을 가지고 :양식이 유효하지 않을 때 뷰가 HttpResponse 객체 오류를 반환하지 않았습니다. django

def func(request): 
    if request.method == "POST": 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      //do processing    
      return HttpResponseRedirect('/') 
    else: 
     form = MyForm() 
     return render_to_response("checkbox.html", RequestContext(request, {'form':form})) 

하지만 형태가 무효 인 경우에, 그것은 나에게 오류 보여줍니다 The view didn't return an HttpResponse object. 내가 검색 및보기 기능이 같이있는 곳마다 실현,하지만 난 내 이유를 모르는 한을 오류가 있습니다. 그것이 무효로하는 동안 그것은 무엇을 해야할지 모른다! 페이지를 표시하지 않고 사용자에게 양식 오류를 표시하는 이유는 무엇입니까? 저를 도와주세요? 형태가 무효 인 경우에 문 만 평가되는 경우 request.method == "POST"False

답변

4

,보기 그냥

는이 문제를 해결하려면 ... 그것은하지 않은,의 else 부분부터 반환, 다음은 보통입니다 양식 조회를위한 패턴 :

def func(request): 
    if request.method == "POST": 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      //do processing    
      return HttpResponseRedirect('/') 
    else: 
     form = MyForm() 

    # outside of the else clause 
    # if the form is invalid, then it will also show the error messages to the user 
    return render_to_response("checkbox.html", RequestContext(request, {'form':form})) 
+0

아하, 당신 말이 맞아. 정말 정말 고마워요 :) – user1597122

+0

@ user1597122 그것은 허용 표시! 필터링에 도움이됩니다! – dokkaebi

3

@ miki725 게시물에 대한 답변이 이미 있습니다. 그냥 제안 당신은 그 if .. else을 피하기 위해 기본 동작으로 GET을 고려하는 것이 좋습니다 :

def func(request): 
    # GET is the default behaviour 
    form = MyForm() 

    if request.method == "POST": 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      //do processing    
      return HttpResponseRedirect('/') 

    return render_to_response("checkbox.html", RequestContext(request, {'form':form})) 
+1

많이 고마워요 :) – user1597122

+0

클래스 기반 뷰는 정말 멋지고 깨끗합니다. https://docs.djangoproject.com/ko/1.6/topics/class-based-views/ – nicorellius

관련 문제