# View 예시
# views.py
from django.http import HttpResponse
from .models import *
def index(request):
# order by의 인자 앞에 - 를 붙혀주면 내림차순, 안붙혀주면 오름차순
latest_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q in latest_question_list])
return HttpResponse(output)
<!-- Template 예시 -->
<!-- index.html -->
{% if questions %}
<!--조건문, 반복문은 {% %}을 사용하며 콜론을 사용하지 않는다.-->
<ul>
{% for quesion in questions %}
<li>{{quesion.question_text}}</li>
{% endfor %}
</ul>
{% else %}
<p>no questions</p>
{% endif %}
<!--제어문이 끝나는 곳에는 {% endif %} {% endfor %} 을 써서 표시해준다.-->
# views.py
from django.http import HttpResponse
from .models import *
from django.shortcuts import render
# render를 통해 html을 렌더링해준다.
# Django의 내장 함수 중 하나로, HTTP 요청을 받아 해당 요청에 대해 원하는 템플릿 파일을 렌더링하여 응답하는 기능
# 보통 Django의 뷰(View)에서 사용
# 첫 번째 인자로 요청(Request) 객체, 두 번째 인자로 템플릿 파일의 경로, 그리고 세 번째 인자로 Context 변수를 입력 받습니다
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'first_question' : latest_question_list[0]}
return render(request, 'polls/index.html', context) # html에서 보여줄 데이터를 객체형태로 보내준다.
urls.py
파일에 app_name
을 꼭 명시하자.<문자형:변수이름>
으로 사용한다. 변수 이름은 views.py
에서 그대로 사용한다.{% url 'app_name:url path name' 넣어야하는 인자 값 %}
을 사용하여 해당 url로 이동한다.try ~ except ...
구문을 사용할 수도 있고 내장 함수를 사용할 수도 있다.# try ~ except 구문
from django.http import HttpResponse, Http404
from .models import *
from django.shortcuts import render
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exist")
return render(request, 'polls/detail.html', {'question':question})
# 내장 함수
from django.http import HttpResponse
from .models import *
from django.shortcuts import render, get_object_or_404
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/detail.html', {'question':question})
에러 처리하는 방법이 궁금했는데 이번에 갈피가 잡힌 것 같다. form
을 적용하는 부분이 조금 헷갈리는데 복습하면서 손에 익혀야겠다.