1. pybo/views.py 에서 render를 이용해 템플릿 출력 준비
/* pybo/views.py */
from django.http import HttpResponse
from .models import Question
def index(request):
"""
question_list.html (질문 리스트 출력)
"""
question_list = Question.objects.order_by('-create_date')
context = {'question_list': question_list}
return render(request, 'pybo/question_list.html', context)
- render 함수는 context에 있는 Question 모델 데이터 question_list를 pybo/questionb_list.html 파일에 적용하여 HTML 코드로 변환한다.
- 장고에서는 이 question_list.html 에 최종적으로 <탬플릿 태그> 를 추가하여 사용하므로 이 html 문서를 템플릿이라고 부른다.
2. 템플릿을 모아 저장할 디렉터리를 만들어준다음 config/settins.py 에 템플릿 디렉토리 등록
(venv)prompt> mkdir templates
/* config/settings.py */
TEMPLATES = [
{
/* ------ 생략 ------*/
'DIR': [BASE_DIR / 'templates']
/* ------ 생략 ------*/
},
]
- DIR에는 템플릿 디렉토리를 여러개 등록할 수 있다.
- 템플릿 디렉토리 역시 pybo 앱 하위에 들어 있을경우 settings.py 에 등록 할 필요없이 바로 사용가능하지만 앞서 url.py 맵핑이 그러하듯 앱이 pybo 외에도 여러개일 경우 관리가 힘들어지게 된다. 여러앱이 공통으로 사용하는 템플릿이 아니라면 위의 방식으로 관리하는것이 좋다.
3. 템플릿 파일 작성하기
{% if question_list %}
<ul>
{% for question in question_list %}
<li><a href="/pybo/{{ question.id }}/">{{ question.subject }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>질문이 없습니다.</p>
{% endif %}
- question_list.html 파일을 templates/pybo 폴더 내부에 작성한다.
- 템플릿 태그에는 3가지 유형만 알면된다.
- 첫번째 분기문 {% if 조건문 %}
- 두번째 반복문 {% for item in list %}
- 세번째 객체출력 {{ object }} - localhost:8000/pybo/ 접속해서 질문목록이 잘 출력되는지 확인한다.
- 직접 장고쉘 또는 Admin으로 질문목록을 추가한뒤 출력결과 확인.
forloop 객체 속성 설명 forloop.counter for문의 순서 - 1부터 표시한다. forloop.counter0 for문의 선서 - 0부터 표시한다. forloop.first for문의 첫번째 순서인경우 True 반환 forloop.last for문의 마지막 순서인경우 True 반환
위 문서는 이지스퍼블리싱에서 출간한 박응용님의 "점프투 장고"를 제가 공부하면서 요약한 내용입니다.
게시한 내용은 공부를 하면서 저만 알아볼 수 있게 요약한 부분들도 많으므로 부족한 내용은
직접 책을 구입하셔서 보시면 좋을 것 같습니다.
'Study > django' 카테고리의 다른 글
django - Namespace (0) | 2021.09.25 |
---|---|
django - QuestionContent (0) | 2021.09.25 |
django - Admin (0) | 2021.09.25 |
django - DataControl (0) | 2021.09.25 |
django - Database Setting (0) | 2021.09.24 |