Question 모델의 pub_date를 기준으로
가장 최근의 질문 10개를 선택하는 Django view 함수를 작성하세요.
from django.http import HttpResponse
from .models import Question
def recent_questions(request):
latest_question_list = Question.objects.order_by("-pub_date")[:10]
output = ", ".join([q.question_text for q in latest_question_list])
return HttpResponse(output)
"-"는 내림차순을 의미
"HttpResponse"는 Django에서 HTTP 요청에 대한 응답을 생성하는 클래스
HttpResponse(output)는 HttpResponse 클래스의 인스턴스를 생성하는 것
HttpResponse(output)는
output 변수의 내용을 포함한
HTTP 응답을 나타내는 객체를 만듦
Django view에서 Question 객체들 중
pub_date가 오늘 날짜인 객체만 선택하여,
그 질문들의 텍스트를 쉼표로 구분된 문자열로 반환하는 함수를 작성하세요.
from django.http import HttpResponse
from django.utils import timezone
from .models import Question
def today_questions(request):
today = timezone.now().date()
questions_today = Question.objects.filter(pub_date__date=today)
output = ", ".join([q.question_text for q in questions_today])
return HttpResponse(output)
timezone.now().date:먼저, timezone.now()를 호출하여 현재의 datetime.datetime 객체를 얻습니다. 그런 다음 이 객체의 date 속성을 참조하여 datetime.date 객체를 얻습니다.
timezone.now() => 2024-04-02 12:30:00
timezone.now().date => 2024-04-02
timezone.now().date():먼저, timezone.now()를 호출하여 현재의 datetime.datetime 객체를 얻습니다. 그런 다음 이 객체의 date() 메서드를 호출하여 datetime.date 객체를 얻습니다.
timezone.now() => 2024-04-02 12:30:00
timezone.now().date() => 2024-04-02
결과적으로 두 경우 모두 현재의 날짜를 나타내는 datetime.date 객체를 반환하지만, 호출 방식에 차이가 있습니다. 첫 번째 방식은 속성 참조이고, 두 번째 방식은 메서드 호출입니다.
HttpResponse`를 사용하여
"Hello, world!" 텍스트를 반환하는
가장 간단한 Django view 함수를 작성하세요.
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("Hello, world!")
Django의 Question 모델에서
pub_date가 현재 연도인 질문만 필터링하여,
그 질문들의 텍스트를 반환하는 view 함수를 작성하세요.
현재 연도는 자동으로 계산되어야 합니다.
from django.utils import timezone
from .models import Question
from django.http import HttpResponse
def pubdate2024(request):
current_year = timezone.now().year
q_list = Question.objects.filter(pub_date__year = current_year)
q_list_txt = ", ".join([i.question_text for i in q_list])
return HttpResponse(q_list_txt)