일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DoitSQL
- 자바 예외
- SQL
- 크롤링 오류
- 웹브라우저 수용도
- 키-값 데이터베이스
- 배열 예제
- R1C3
- DoIt
- 예제
- dbms
- 숫자형식오류
- 크롤링
- DoitSQL입문
- SQL입문
- 웹 브라우저 전쟁
- 데이터베이스
- 숫자 형식
- 자바 오류
- 페이지분석
- 자바
- HTML역사
- html
- 예외
- 함수
- Doit입문SQL
- 생성자
- 우아한테크
- 함수 선언
- 배열 3요소
Archives
- Today
- Total
프로그래밍
[Django] 장고 Template 활용 예제(+에러페이지) 본문
728x90
반응형
2023.11.28.화
장고 Template 활용
장고 Template의 기본적인 내용을 알아보았으니 본격적으로 활용해보자
2023.11.28 - [Python/Django] - [Django] 장고 Template
views.py
질문 목록이 출력되도록 하는 함수이다
질문 목록 데이터는 Question.objects.order_by('-create_date') 로 얻을 수 있다
from django.shortcuts import render
from .models import Question
def index(request):
question_list = Question.objects.order_by('-create_date') # 질문 목록 데이터
context = {'question_list': question_list}
# 파이썬 데이터를 템플릿에 적용하여 HTML로 반환
return render(request, 'pybo/question_list.html', context)
템플릿 파일
views.py의 render 함수에서 사용한 템플릿의 파일명 그대로 템플릿 파일을 만들어준다
<!-- question_list.html -->
{% if question_list %}
<ul>
{% for question in question_list %}
<!-- 클릭시 요청될 URL -->
<li><a href="/pybo/{{ question.id }}/">{{ question.subject }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>질문이 없습니다.</p>
{% endif %}
urls.py
질문 목록 화면에서 링크를 클릭하여 질문 상세 요청이 된다
해당 요청에 따른 URL은 맵핑이 되어있지 않으므로 urls.py에 추가해주어야 한다
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('<int:question_id>/', views.detail),
]
views.py
이제 해당 요청에 따라 실행될 view 로직
즉, 질문 상세에 대한 views.detail 함수가 필요하다
(... 생략 ...)
def detail(request, question_id):
question = Question.objects.get(id=question_id)
context = {'question': question}
return render(request, 'pybo/question_detail.html', context)
question_detail.html
질문 상세에 대한 Template 작성을 해야한다
<!--question_detail.html -->
<h1>{{ question.subject }}</h1>
<div>
{{ question.content }}
</div>
에러페이지
장고에서 보다 손쉽게 에러페이지 처리가 가능하다
# views.py
from django.shortcuts import render, get_object_or_404
from .models import Question
(... 생략 ...)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
context = {'question': question}
return render(request, 'pybo/question_detail.html', context)
728x90
반응형
'Python > Django' 카테고리의 다른 글
[Django] 장고 Template (0) | 2023.11.28 |
---|---|
[Django] 장고 View (1) | 2023.11.27 |
[Django] 장고 관리자(Admin) (0) | 2023.11.27 |
[Django] 장고 Model 사용(생성, 조회, 수정, 삭제, 작성) (1) | 2023.11.27 |
[Django] 장고 Model (1) | 2023.11.24 |
Comments