728x90
반응형
SMALL
뷰 (View)
views.py는 뷰 로직을 코딩하는 가장 중요한 파일이다. 장고에서 함수형과 클래스형 두가지 뷰로 구분한다. 장고가 제공하는 제네릭 뷰를 사용하고 재활용 및 확장성 측면에서 클래스형 뷰를 쓰는 것이 좋다.
투표 어플리케이션 만들기
import logging
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.shortcuts import render, get_object_or_404
from polls.models import Question, Choice
# Create your views here.
def index(request):
latest_question_list = Question.objects.all().order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question': question})
def vote(request, question_id):
question = get_object_or_404(Question, pk=question_id)
try:
logger = logging.getLogger('project.interesting.stuff')
logger.debug('TEST')
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
return render(request, 'polls/detail.html', {
'question': question,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('polls:results', args=(question.id,)))
def results(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/results.html', {'question': question})
728x90
반응형
LIST
'App Programming > Django' 카테고리의 다른 글
[Django] 셸로 데이터 다루기 (0) | 2023.06.23 |
---|---|
[Django] 템플릿 (Template) (0) | 2023.06.22 |
[Django] URL (0) | 2023.06.20 |
[Django] 모델 (Model) (0) | 2023.06.20 |
[Django] MVT 패턴 (0) | 2023.06.20 |