71일차 시작.... (DB 사용)

조동현·2022년 10월 18일
0

[교육] Django

목록 보기
4/6
post-thumbnail

📌 Django DB 클래스(Model) 사용

  • ORM SQL 조회
    - 클래스객체.objects.all() : SELECT문
    - 클래스객체.objects.filter(id='2') : SELECT문 + WHERE절
    - 클래스객체.objects.last() : SELECT문 + ORDER BY절 + LIMIT절
    last()의 특징으로 무조건 하나의 데이터만 가져오기 때문에 인덱싱하지 않고 사용 가능

  • ORM SQL 입력
    - 클래스객체(칼럼1=값1, 칼럼2=값2, ....).save() : INSERT문

  • ORM SQL 수정
    - 인스턴스객체.칼럼1 = 수정할 값1 : UPDATE문

  • ORM SQL 삭제
    - 인스턴스객체.delete() : UPDATE문

  • ORM SQL 조인
    - 클래스객체.objects.select_related('본인 클래스의 FK 칼럼명').get(조건....) : JOIN절


📌 Django 페이징 처리

  • 절차

1. DB에서 전체 데이터 가져오기

datas = Sangdata.objects.order_by('-code')

2. Paginator 클래스 생성자 호출

paginator = Paginator(datas, 5)     # Paginator(전체 데이터, 페이지당 데이터개수)

3. 요청주소로부터 받은 page number를 받는다. (없다면 page=1로 설정)

try:
    page = request.GET['page']
except:
    page = 1

4. 전달받은 페이지 번호로 paginator 객체의 page() 메소드를 사용하여 페이지에 맞는 데이터를 가져온다.

try:
    datas = paginator.page(page)

4-1. 전달받은 페이지 번호가 int 형식이 아니라면 1페이지에 있는 데이터를 가져온다.

except PageNotAnInteger:
    datas = paginator.page(1)

4-2. 전달받은 페이지 번호가 페이징된 페이지 번호를 넘어간다면 마지막 페이지에 있는 데이터를 가져온다.

except EmptyPage:
    datas = paginator.page(paginator.num_pages)

5. 가공된 데이터를 forwarding 시킨다.

return render(request, "sangList.html", {'list':datas})


📌 Django Paginator 클래스 기능

  • 기능
    - paginator.num_pages : 마지막 페이지 번호를 반환
    - paginator.page_range : 전체 페이지를 range() 형식으로 반환


profile
데이터 사이언티스트를 목표로 하는 개발자

0개의 댓글