- 팀 과제 뉴스피드 프로젝트 진행상황
- 기본 기능 CRUD완료 후, 템플릿 작업 + 페이지네이션, 검색 기능 완료
Today I Learned
1. 페이지네이션
request.GET은 URL의 쿼리스트링에서 전달된 데이터를 담고있는 딕셔너리
만약 URL이 ' http://naver.com/?page=2' 와 같이 요청되었다면
request.GET은 {'page' : '2'}와 같은 딕셔너리를 반환
따라서 page = request.GET.get('page')는 쿼리스트링에서 'page'파라미터를 가져오는 것
=> 페이지네이션을 구현하기 위해 페이지 번호를 가져오는 것
'paginatior' 객체는 page()메서드를 제공
page() 메서드는 인자로 전달된 페이지 번호에 해당하는 객체들을 가져온다.
qna_list = paginator.page(page)는 현재 보여줄 페이지에 해당하는 QnaModel 객체들을
가져와서 qna_list 변수에 저장
paginator 객체가 100개의 QnaModel 객체들을 페이지네이션 하여 10개씩 할당할 때,
'page'변수에 2가 할당되어 있다면 paginator.page(2)는 11~20번째 QnaModel 객체들을
가져와서 qna_list 변수에 저장한다.
2. urls.py에 앱 이름을 써주는 이유
하나의 프로젝트에서 여러 개의 앱이 존재할 수 있는데, URLconf파일에서 어느 앱의 URL패턴을 참조하는 지 구분하기 위해 앱이름을 명시하는 것
또한 앱 이름을 사용하여 URL패턴을 참조하면, URL패턴의 이름 충돌을 방지할 수 있다.
앱1과 앱2가 모두 search라는 이름의 URL패턴을 가지고 있을 때, 앱 이름을 사용하여 구분할 수 있다.
urls.py에 앱 이름을 쓰면 템플릿에서 URL을 생성 시 해당 앱의 URLconf파일에서 URL을 찾기 떄문에, {% url %} 템플릿 태그 사용 시 앱이름을 같이 적어줘야 한다.
<form method="get" action="{% url 'challenge:search-results' %}">
=> challenge 앱의 urls.py에서 name속성이 search-results인 URL패턴을 찾아서
해당 URL경로를 생성한다.
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 TIL 27일차 (1) | 2023.04.19 |
---|---|
내일배움캠프 TIL 26일차 (2) | 2023.04.17 |
내일배움캠프 TIL 24일차 (0) | 2023.04.13 |
내일배움캠프 TIL 23일차 (0) | 2023.04.12 |
내일배움캠프 TIL 22일차 (2) | 2023.04.11 |