๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Python Programming/Frameworks

< django - 23 >

by A Lim Han 2022. 8. 25.

23. ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ๊ณผ GET + ๊ฒ€์ƒ‰ ํผ + ํŽ˜์ด์ง• + ๊ฒ€์ƒ‰ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฒ€์ƒ‰ ํ•จ์ˆ˜

 

 

 

# ๊ฒ€์ƒ‰ ํ™”๋ฉด ๋ฐ ๊ฒ€์ƒ‰ ์ฐฝ

- projects\mysite\templates\pybo\question_list.html ํŒŒ์ผ์„ ์—ด์–ด ํ…œํ”Œ๋ฆฟ์— ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ์ฐฝ ์ถ”๊ฐ€

์‚ฌ์ง„ ์ „๋ฌธ ์ถ”๊ฐ€

+ ์งˆ๋ฌธ ๋“ฑ๋กํ•˜๊ธฐ ๋ฒ„ํŠผ์€ ๊ฒ€์ƒ‰์ฐฝ์˜ ์™ผ์ชฝ์œผ๋กœ ์ด๋™

 

+ Line 11์˜ id="search_kw"

-->  ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ด ํ…์ŠคํŠธ์ฐฝ์— ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ฝ๊ธฐ ์œ„ํ•ด id์†์„ฑ ์ถ”๊ฐ€

 

 

 

 

# ๊ฒ€์ƒ‰ ํผ

- projects\mysite\templates\pybo\question_list.html ์„ ์—ด๊ณ  page, kw๋ฅผ ๋™์‹œ์— GET์œผ๋กœ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” searchForm ์ถ”๊ฐ€

Line 90 ~ 93 ์ถ”๊ฐ€

+ << Line 90 >>

: method ์†์„ฑ์— "get" ์„ค์ •  -->  GET ๋ฐฉ์‹์œผ๋กœ ์š”์ฒญํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

: action ์†์„ฑ์€ ํผ์ด ์ „์†ก๋˜๋Š” URL  -->  ์งˆ๋ฌธ ๋ชฉ๋ก URL์ธ {% url 'index' %} ์ง€์ •

 

+ Line 91์˜ kw์™€ 92์˜ page ์˜ ๊ฒฝ์šฐ ์ด์ „์— ์š”์ฒญํ–ˆ๋˜ ๊ฐ’์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ์— value ์— ๊ฐ’ ๋Œ€์ž…  -->  ์ด์ „์— ์š”์ฒญ๋œ kw, page ๊ฐ’์€ index ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋จ

 

 

 

 

# ํŽ˜์ด์ง•

- projects\mysite\templates\pybo\question_list.html ํŒŒ์ผ์„ ์—ด๊ณ  ์ง์ ‘ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๊ฐ’์„ ์ฝ์–ด ํผ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก, ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •

Line 56, 57 ์ˆ˜์ • + Line 69, 70
Line 74, 75 + Line 83, 84 ์ถ”๊ฐ€

+ ๋ชจ๋“  ํŽ˜์ด์ง€ ๋งํฌ๋ฅผ href ์†์„ฑ์— ์ง์ ‘ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ ๋„ data-page ์†์„ฑ์œผ๋กœ ๊ฐ’์„ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •

 

 

 

 

# ๊ฒ€์ƒ‰ ์Šคํฌ๋ฆฝํŠธ

- projects\mysite\templates\pybo\question_list.html ํŒŒ์ผ์„ ์—ด์–ด page, kw ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€

์‚ฌ์ง„ ์ „๋ฌธ ์ถ”๊ฐ€

+ Line 101 ~ 107์˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ์•„๋ž˜ ๊ณผ์ • ์ค‘ searchForm ์„ ์š”์ฒญํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•จ

: ์œ„์—์„œ ์ž‘์„ฑํ•œ class ์†์„ฑ๊ฐ’์œผ๋กœ "page-link"๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋งํฌ๋ฅผ ํด๋ฆญ  -->   ๊ทธ ๋งํฌ์˜ data-page ์†์„ฑ๊ฐ’์„ ์ฝ์–ด searchForm์˜ page ํ•„๋“œ์— ์„ค์ •  -->  searchForm์„ ์š”์ฒญ

 

+ Line 111์˜ value = 1;

: ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒฝ์šฐ๋Š” ์ƒˆ๋กœ์šด ๊ฒ€์ƒ‰์— ํ•ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1 ์„ค์ •

 

 

 

 

# ๊ฒ€์ƒ‰ ํ•จ์ˆ˜

1. projects\mysite\pybo\views\base_views.py ํŒŒ์ผ์„ ์—ด์–ด ํ™”๋ฉด์—์„œ ์š”์ฒญํ•œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ์งˆ๋ฌธ ๋ชฉ๋ก ์กฐํšŒ์— ์ ์šฉ๋  ์ˆ˜ ์žˆ๋„๋ก base_views.py์˜ index ํ•จ์ˆ˜๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •

Line 2, 10, 12 ~ 19, 22 ์ถ”๊ฐ€

+ Line 14, 15์˜ subject__icontains=kw

-->  ์ œ๋ชฉ์— kw ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์˜๋ฏธ

 

+ Line 18์˜ answer__author__username__icontains

-->  "๋‹ต๋ณ€์„ ์ž‘์„ฑํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์— ํฌํ•จ๋˜๋Š”๊ฐ€?" ์˜ ์˜๋ฏธ

+ filter ํ•จ์ˆ˜์—์„œ๋Š” ์–ธ๋”๋ฐ” 2๊ฐœ(__)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์˜ ํ•˜์œ„ ์†์„ฑ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

+ Line 22์˜ 'page': page, 'kw': kw

-->  page์™€ kw๋ฅผ ํ…œํ”Œ๋ฆฟ์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด context ๋”•์…”๋„ˆ๋ฆฌ์— ์ถ”๊ฐ€

 

+ subject__contains=kw ๋Œ€์‹  subject__icontains=kw์„ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„ ์—†์ด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

 

 

 

2. http://localhost:8000/pybo/ ํŽ˜์ด์ง€๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํ™•์ธ

 

 

'โœ’๏ธ Python Programming > Frameworks' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

< django - 22 >  (0) 2022.08.23
< django - 21 >  (0) 2022.08.22
< django - 20 >  (0) 2022.08.17
< django - 19 >  (0) 2022.08.15
< django - 18 >  (0) 2022.08.07