2017-11-10 14 views
-1

私はdjangoでソーシャルWebアプリケーションを作成しようとしています。ユーザーが質問に答えるために使用できるフォームを作った。すべてがうまく働いたが、私はすべてのコンテンツ(空のフォーム)せずにフォームを送信すると、私はエラーにdjango:割り当て前に参照されているUnboundLocalErrorローカル変数

(Unbound Local error "local variable 'new_answer' referenced before assignment")

を得た私は、Djangoのために新たなんだと私は任意のヘルプは非常になりますので、これについて多くを知りません種類。ここ は、私の見解コードです:

def question_detail(request, pk): 
    question=get_object_or_404(Question, pk=pk) 
    #list of active answers for this question 
    answers = question.answers.filter(active=True) 
    answer_form = AnswerForm() 
    if request.method=='POST': 
     #a comment was posted 
     answer_form = AnswerForm(data=request.POST or None) 
     if answer_form.is_valid(): 
      new_answer= answer_form.save(commit=False) 
      new_answer.question = question 
      u=request.user 
      new_answer.name = u 
      new_answer.save() 
    else: 
     answer_form = AnswerForm() 
     new_answer = False 
    question_tags_ids = question.tags.values_list('id', flat=True) 
    similar_questions = Question.objects.filter(tags__in = question_tags_ids)\ 
        .exclude(id=question.id) 
    similar_questions = similar_questions.annotate(same_tags=Count('tags'))\ 
        .order_by('-same_tags','-created')[:4] 
    return render(request,'dashboard/post/detail.html', 
       {'question':question, 
       'answer_form':answer_form, 
       'new_answer': new_answer, 
       'similar_questions':similar_questions}) 

答えて

0

はコードの部分を考えてみましょう。

if request.method=='POST': 
    #a comment was posted 
    answer_form = AnswerForm(data=request.POST or None) 
    if answer_form.is_valid(): 
     new_answer= answer_form.save(commit=False) 
     new_answer.question = question 
     u=request.user 
     new_answer.name = u 
     new_answer.save() 

例えば、ユーザーがフォームを送信してanswer_formが無効または空の場合、その後、あなたがエラーを表示するには、他に書く必要がある場合:私はあなたの提案を試してみましたが、今では働いて

if request.method=='POST': 
#a comment was posted 
    answer_form = AnswerForm(data=request.POST or None) 
    if answer_form.is_valid(): 
     new_answer= answer_form.save(commit=False) 
     new_answer.question = question 
     u=request.user 
     new_answer.name = u 
     new_answer.save() 
    else: 
     #code to handle invalid form submission 
+0

おかげでよく – Ali

関連する問題