14. ๋ด๋น๊ฒ์ด์ ๋ฐ + include ํ๊ทธ + ํ์ด์ง + ํ ์คํธ ๋ฐ์ดํฐ ์์ฑ + Paginator ํด๋์ค + ํ์ด์ง ๋ฆฌ์คํธ
# ๋ด๋น๊ฒ์ด์ ๋ฐ
1. projects\mysite\templates\base.html ํ์ผ์ base.html ํ ํ๋ฆฟ์ ๋ด๋น๊ฒ์ด์ ๋ฐ ์ถ๊ฐ
+ Line 18 --> ํญ์ pybo:index ํ์ด์ง๋ก ์ด๋ํด ์ฃผ๋ 'Pybo' ๋ก๊ณ ๋ฅผ ๊ฐ์ฅ ์ผ์ชฝ์ ๋ฐฐ์น
+ Line 30 --> ์ค๋ฅธ์ชฝ์๋ '๋ก๊ทธ์ธ' ๋งํฌ๋ฅผ ์ถ๊ฐ
2. http://localhost:8000/pybo/ ํ์ด์ง ํธ์ถ
+ ์ผ์ชฝ ์๋จ์ pybo ๊ธ์๋ฅผ ๋๋ฅด๋ฉด ์ธ์ ๋ ๋ค์ ๋ฉ์ธ ํ์ด์ง๋ก ๋์๊ฐ ์ ์์.
3. Ctrl + ๋ง์ฐ์ค ์คํฌ๋กค์ ํตํด ์น ๋ธ๋ผ์ฐ์ ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ฐ์ธก ์๋จ์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด ๋ฒํผ์ด ์๊ธฐ๊ณ ๋ก๊ทธ์ธ ๋งํฌ๊ฐ ์ฌ๋ผ์ง๋ค.
+ ๋ถํธ์คํธ๋ฉ์ ๋ฐ์ํ ์น ๊ธฐ๋ฅ : ๋ถํธ์คํธ๋ฉ์ ๋ธ๋ผ์ฐ์ ์ ํฌ๊ธฐ๊ฐ ์์์ง๋ฉด ๋ด๋น๊ฒ์ด์ ๋ฐ์ ์๋ ๋งํฌ๋ค์ ์์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด ๋ฒํผ์ผ๋ก ์จ๊น
4. ๋ถํธ์คํธ๋ฉ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ projects\mysite\static\bootstrap.min.js์ ๋ถ์ฌ ๋ฃ๊ธฐ --> projects\mysite\templates\base.html ํ์ผ์ Line 41, 42 ๋ด์ฉ ์ถ๊ฐ
5. ๋ค์ http://localhost:8000/pybo/ ํ์ด์ง ํธ์ถ --> ํ๋ฒ๊ฑฐ ๋ฉ๋ด ๋ฒํผ ํด๋ฆญ ์ ์๋์ฒ๋ผ ๋ก๊ทธ์ธ ๋งํฌ๊ฐ ํ์๋จ
# include ํ๊ทธ
: ํ ํ๋ฆฟ์ ํน์ ์์น์ ๋ค๋ฅธ ํ ํ๋ฆฟ์ ์ฝ์ ํ ์ ์๋ ํ๊ทธ๋ก, ํ ํ๋ฆฟ์์ ํน์ ์์ญ์ด ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋ ๊ฒฝ์ฐ ์ค๋ณต์ ์์ ๊ธฐ ์ํด ์ฌ์ฉํจ
1. projects\mysite\templates\navbar.html ํ์ผ์ ์์ฑํ๊ณ base.html์ ํฌํจ์ํฌ navbar.html ํ ํ๋ฆฟ์ ์์ฑํ๋ค.
2. projects\mysite\templates\base.html ํ์ผ์ ์๋์ฒ๋ผ ์์ ํ๋ค.
+ ๋ด๋น๊ฒ์ด์ ๋ฐ์ HTML ์ฝ๋๋ฅผ ์ญ์ ํ๊ณ navbar.html ํ ํ๋ฆฟ์ include ํ๊ทธ๋ก ํฌํจ์ํด
# ํ ์คํธ ๋ฐ์ดํฐ ์์ฑ
1. python manage.py shell ์ ์ ๋ ฅํ์ฌ ์ฅ๊ณ ์ ธ ์คํ
2. ์ง๋ฌธ ๋ฐ์ดํฐ ์์ฑ์ ์ํ ๋ชจ๋์ ์ํฌํธ
3. 300๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ ์์ฑ --> ์ฅ๊ณ ์ ธ ์ข ๋ฃ
2. ๋ก์ปฌ ์๋ฒ ์คํ ํ http://localhost:8000/pybo/ ํ์ด์ง ํธ์ถํ์ฌ ์์ฑ๋ ๋ฐ์ดํฐ ์กฐํ
# Paginator
: ์ฅ๊ณ ์์ ํ์ด์ง์ ์ํด ์ฌ์ฉํ๋ ํด๋์ค
- projects\mysite\pybo\views.py ํ์ผ์ index ํจ์์ ํ์ด์ง ๊ธฐ๋ฅ ์ ์ฉ
+ << Line 9 >>
: page = request.GET.get('page', '1') --> http://localhost:8000/pybo/?page=1 ์ฒ๋ผ GET ๋ฐฉ์์ผ๋ก ํธ์ถ๋ URL์์ page๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ
: http://localhost:8000/pybo/ ์ฒ๋ผ page๊ฐ ์์ด ํธ์ถ๋ ๊ฒฝ์ฐ --> ๋ํดํธ๋ก 1์ด๋ผ๋ ๊ฐ์ ์ค์
+ << Line 11 >>
: ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ question_list --> ๊ฒ์๋ฌผ ์ ์ฒด๋ฅผ ์๋ฏธํ๋ ๋ฐ์ดํฐ
: ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ 10 --> ํ์ด์ง๋น ๋ณด์ฌ์ค ๊ฒ์๋ฌผ์ ๊ฐ์
+ << Line 12 >>
: paginator๋ฅผ ์ด์ฉํ์ฌ ์์ฒญ๋ ํ์ด์ง(page)์ ํด๋น๋๋ ํ์ด์ง ๊ฐ์ฒด(page_obj)๋ฅผ ์์ฑ --> ์ฅ๊ณ ๋ด๋ถ์ ์ผ๋ก๋ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ์กฐํํ์ง ์๊ณ ํด๋น ํ์ด์ง์ ๋ฐ์ดํฐ๋ง ์กฐํํ๋๋ก ์ฟผ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋จ
: ํ์ด์ง ๊ฐ์ฒด page_obj์ ์์ฑ
ํญ๋ชฉ | ์ค๋ช |
paginator.count | ์ ์ฒด ๊ฒ์๋ฌผ ์ |
paginator.per_page | ํ์ด์ง๋น ๋ณด์ฌ์ค ๊ฒ์๋ฌผ ์ |
paginator.page_range | ํ์ด์ง ๋ฒ์ |
number | ํ์ฌ ํ์ด์ง์ ๋ฒํธ |
previous_page_number | ์ด์ ํ์ด์ง์ ๋ฒํธ |
next_page_number | ๋ค์ ํ์ด์ง์ ๋ฒํธ |
has_previous | ์ด์ ํ์ด์ง์ ์กด์ฌ ์ ๋ฌด |
has_next | ๋ค์ ํ์ด์ง์ ์กด์ฌ ์ ๋ฌด |
start_index | ํ์ฌ ํ์ด์ง์ ์์ ์ธ๋ฑ์ค |
end_index | ํ์ฌ ํ์ด์ง์ ๋ ์ธ๋ฑ์ค |
# ํ ํ๋ฆฟ์ ํ์ด์ง ์ ์ฉ
1. projects\mysite\templates\pybo\question_list.html ํ์ผ์ </table>ํ๊ทธ ๋ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ์๋์ฒ๋ผ ๋๊ฒ ํ๊ธฐ
+ ์ด์ /๋ค์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ --> ์ด์ /๋ค์ ๋งํฌ ํ์ฑํ
+ ์ด์ /๋ค์ ํ์ด์ง๊ฐ ์๋ ๊ฒฝ์ฐ --> ์ด์ /๋ค์ ๋งํฌ ๋นํ์ฑํ
+ ๋ถํธ์คํธ๋ฉ์ pagination ์ปดํฌ๋ํธ --> ํ์ด์ง ๋ฆฌ์คํธ๋ฅผ ๋ณด๊ธฐ ํธํ๊ฒ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ
ex. pagination (Line 31), page-item(Line 34), page-link(Line 61) ๋ฑ์ด ๋ถํธ์คํธ๋ฉ pagination ์ปดํฌ๋ํธ์ ํด๋์ค์
+ << Line 33 >>
: ์ด์ ํ์ด์ง๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ ์ฒดํฌ
+ << Line 35 >>
: ์ด์ ํ์ด์ง์ ๋ฒํธ
+ << Line 55 >>
: ๋ค์ ํ์ด์ง๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ ์ฒดํฌ
+ << Line 57 >>
: ๋ค์ ํ์ด์ง์ ๋ฒํธ
+ << Line 43 >>
: ํ์ด์ง ๋ฆฌ์คํธ ๋ฃจํ --> ํด๋น ํ์ด์ง๋ก ์ด๋ํ ์ ์๋ ๋งํฌ ์์ฑ
+ << Line 44, 45 >>
: ํ์ฌ ํ์ด์ง์ ๊ฐ์์ง ์ฒดํฌ + ํ์ฌ ํ์ด์ง์ ๊ฐ์ ๊ฒฝ์ฐ --> active ํด๋์ค๋ฅผ ์ ์ฉํ์ฌ ๊ฐ์กฐ
2. http://localhost:8000/pybo/ ํ์ด์ง ํธ์ถ
+ ๋ฌธ์ ์
: ํ์ด์ง ์ฒ๋ฆฌ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋๊ธด ํ์ง๋ง ์ด๋ ๊ฐ๋ฅํ ํ์ด์ง๊ฐ ๋ชจ๋ ํ์๋์ด ๋ณด๊ธฐ ๋ถํธํจ.....
3. 2๋ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด projects\mysite\templates\pybo\question_list.html ํ์ผ์ ์๋์ ๊ฐ์ด ์์
+ Line 44, 54์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ํ์ด์ง ํ์ ์ ํ ๊ธฐ๋ฅ์ ๊ตฌํํจ --> ํ์ฌ ํ์ด์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ข์ฐ๋ก 5๊ฐ์ฉ๋ง ๋ณด์ด๊ฒ ์ ํ
+ << Line 44 >>
: |add:-5, |add:5 ๋ ํ ํ๋ฆฟ ํํฐ๋ก, ์ ์๋ 5๋งํผ ๋นผ๊ณ ํ์๋ 5๋งํผ ๋ํ๋ผ๋ ์๋ฏธ --> ํ์ฌ ํ์ด์ง๋ฅผ ์๋ฏธํ๋ question_list.number๋ณด๋ค 5๋งํผ ํฌ๊ฑฐ๋ ์์ ๊ฐ๋ง ํ์ํ๋๋ก ์ ํํจ
4. ๋ค์ http://localhost:8000/pybo/ ํ์ด์ง ํธ์ถ
'โ๏ธ Python Programming > Frameworks' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
< django - 16 > (0) | 2022.08.06 |
---|---|
< django - 15 > (0) | 2022.08.06 |
< django - 13 > (0) | 2022.08.05 |
< django - 12 > (0) | 2022.08.05 |
< django - 11 > (0) | 2022.08.04 |