AngelPlayer`s Diary

모델 데이터 (역)순서대로 조회하기

- order_by() : 조회한 데이터를 특성 속성으로 정렬하는 함수

- create_date : 작성일시의 순서 (-가 붙으면 역순)

변수 = 모델.objects.order_by('create_date')
context = {'키값(보통동일하게사용)' : 변수}

 

- render() : 딕셔너리 형태의 데이터(context)를 html 코드로 변환

이때 변환된 html 코드를 템플릿이라고 하며, 장고의 태그를 사용할 수 있는 html 파일

from django.shortcuts import render
...
def index(request):
	...
    return render(request, '앱/html파일명.html', context);

 

 

 

템플릿 생성 & 조회하기

루트 폴더에 templates 폴더 생성

>>> mkdir templates

 

config/settings.py에서 TEMPLATES 속성 변경

# 템플릿 디렉토리의 위치를 변경
TEMPLATES = [ {
	...
    'DIRS' : [BASE-DIR / 'templates'],
    ...
} ]

 

 

 

템플릿 태그 - 분기, 반복, 객체

- 분기 : if-elif-else문

{% if 딕셔너리키값 %} # 키값이 있다면의 의미
	...
{% else %}
	...
{% endif %} # 마지막에 {% endif %}

 

- 반복 : for문

{% for item in list %}
	...
{% endfor %}

# for문은 forloop 객체를 사용할 수 있음
forloop.counter # for문의 순서를 표현하며 1부터 시작
forloop.counter0 # for문의 순서를 표현하며 0부터 시작
forloop.first # for문의 첫 번째 순서인 경우 True
forloop.last # for문의 마지막 순서인 경우 True

 

- 출력

{{ item }}
{{ item.id }}

 

 

 

상세 페이지 제작

사용자가 요구하는 id(ex. 앱/2)를 가지고 상세 페이지를 제작할 때

# 앱/urls.py
...
urlpatterns = [
	...
    path('<int:파라미터명>', views.함수), # int값이 들어오면 question_id에 넣어 파라미터로 반환
]

 

요구하는 id와 실제 모델 데이터를 비교하여 값을 찾음

-> 존재하지 않는 데이터를 찾는 경우 에러가 발생함

def 함수(request, 파라미터명): # 앞에서 만든 파라미터를 사용
	변수 = 모델.objects.get(id=파라미터명) # 파라미터와 동일한 id를 가진 데이터를 변수에 넣음
    context = {'키값' : 변수}
    return render(request, 'html파일명.html', context)

 

에러 대신 404를 띄우도록 수정

def 함수(request, 파라미터명): # 앞에서 만든 파라미터를 사용
	# 변수 = 모델.objects.get(id=파라미터명)
    변수 = get_object_or_404(모델, pk=파라미터명) # 있으면 변수에 저장, 없으면 404 페이지 반환
    context = {'키값' : 변수}
    return render(request, 'html파일명.html', context)

 

공유하기

facebook twitter kakaoTalk kakaostory naver band