Study/django

django - QuestionTitleList

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