챕터 2-10 (p 113) 에서 views.py 의 코드 중 form 변수 문의

안녕하세요 저자님

점프투장고 도서는 쉽게 써주셔서 잘 보고 있습니다.
이해가 좀 안되는 라인이 있어 설명해주시면 감사하겠습니다.

context={'form' : form} 라인에서 form 값이 저장되는 원리를 설명해주실수 있으실지요.

위쪽 라인의 form 변수들은 모두 지역변수인데 context 부분에 어떻게 값이 전달되는지 이해가 잘 안됩니다.


def question_create(request):
    """
        pybo 질문 등록
    """
    if request.method == 'POST':
        form = QuestionForm(request.POST) ## 여기 form 은 if 문 안에서만 존재하는 지역변수
        if form.is_valid():
            question = form.save(commit=False)
            question.create_date = timezone.now()
            question.save()
            return redirect('pybo:index')
    else:
        form = QuestionForm() ## 여기 form 은 else 안에만 존재하는 지역변수
    context = {'form': form} ## if 문 밖에 정의된 form에 값이 들어가는 원리가 이해가 되지 않음

    return render(request, 'pybo/question_form.html', context)

장고매니아 345

M 2021년 3월 2일 2:02 오후

저도 궁금하네요..사실 대충 지나갔는데..명확히 알았으면 하네요. - 최원호님, 2021년 3월 2일 11:54 오전 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

안녕하세요.

파이썬은 if 블럭내에 지정한 변수는 if문 바깥에서도 참조가 가능합니다. (C나 Java와는 좀 다르죠)

따라서 다음과 같은 코드도 실행이 됩니다.

if 3>2:
   a = "yes"
else:
   b = "no"

print(a)

사실 이 부분은 깊게 파면 꽤 어려운 주제입니다. 좀 더 자세한 내용은 아래 문서를 참조하시면 좋을 것 같습니다.

박응용

M 2021년 3월 2일 12:16 오후

저자님 답변 감사합니다 :) - 장고매니아님, 2021년 3월 2일 1:59 오후 추천 , 대댓글