정렬하기
order_by( )는 정렬하는 함수이다. create_date에 - 기호가 붙어 있으면 역방향, 없으면 순방향 정렬
from django.shortcuts import render, redirect
from .models import Product
def show_list(request):
product_list = Product.objects.order_by('-create_date')
return redirect('/')
템플릿 설정하기
(settings.py - TEMPLATES에 추가하기)
#app에서 공동으로 사용할 templates 폴더 생성
'DIRS': [BASE_DIR / 'templates'],
템플릿 태그
1. 분기
{% if 조건문 %}
{% elif 조건문 %}
{% else %}
{% endif %}
2. 반복
{% for i in item %}
'''
여기서 forloop 사용 가능
forloop.counter 루프내의 순서로 1부터 표시
forloop.counter0 루프내의 순서로 0부터 표시
forloop.first 루프의 첫번째 순서인 경우 True
forloop.last 루프의 마지막 순서인 경우 True
'''
{% endfor %}
3. 객체 출력
{% item.id %}
*템플릿 문법 참조 : https://docs.djangoproject.com/en/4.0/topics/templates/
디테일 페이지
(urls.py)
- 로컬 ip/5 : product_id에 5가 저장된 후 product_detail 함수가 실행된다.
- views.py에서 question_id를 사용하지 않더라도 인자로 product_id를 받아줘야 한다.
from django.urls import path
from . import views
urlpatterns = [
path('<int:product_id>/', views.product_detail, name='product_detail'),
]
(views.py)
def product_detail(request, id):
#(DB)id = id(POST에서 불러온 값)
product = Product.objects.get(id=id)
# user의 signup.html을 화면에 보여주는 함수
# templates / product / mall.html
return render(request, 'product/mall.html', {'product':product})
(mall.html)
<h1>{{ product.description }}</h1>
오류 페이지
DoesNotExist(500) : 로컬 ip / product_id 값이 없을 때 발생하는 오류를 404 페이지로 리턴하고자 한다.
from django.shortcuts import render, get_object_or_404
from .models import Product
def product_detail(request, id):
# pk = Primary Key(기본키)
product = get_object_or_404(Product, pk=product_id)
return render(request, 'product/mall.html', {'product':product})
Primary Key 와 Unique Key 차이
Primary Key : 주민등록번호, 전화번호 같은 데이터를 식별하고자 할 때 사용하는 키. 테이블당 하나의 pk만 지정할 수 있으며, NULL 값을 허용하지 않는다.
Unique Key : 아이디 중복 검사 등 유일성을 부여할 때 사용하는 키. NULL 값을 허용한다.
*제네릭뷰(Generic View) : 비슷한 패턴의 내용을 간략하게 만든 것.
'Python > Django' 카테고리의 다른 글
07. Django from 태그 (0) | 2023.04.16 |
---|---|
06. Django URL 별칭 (0) | 2023.04.10 |
04.5 Django 관리자 (0) | 2023.04.09 |
04.Django 모델 (0) | 2023.04.09 |
03. Django URL (0) | 2023.04.07 |