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

< django - 22 >

by A Lim Han 2022. 8. 23.

22. ๋‹ต๋ณ€ ์•ต์ปค + ๋‹ต๋ณ€ redirect + ๋งˆํฌ๋‹ค์šด๊ณผ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

 

 

# ๋‹ต๋ณ€ ์•ต์ปค

- projects\mysite\templates\pybo\question_detail.html ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ต๋ณ€ ์ž‘์„ฑ, ์ˆ˜์ • ์‹œ์— ์ด๋™ํ•ด์•ผ ํ•  ์•ต์ปค ํƒœ๊ทธ๋ฅผ ์งˆ๋ฌธ ์ƒ์„ธ ํ…œํ”Œ๋ฆฟ์— ์ถ”๊ฐ€

Line 44 ์ถ”๊ฐ€

+  URL ์„ ํ˜ธ์ถœํ•  ๋•Œ ์›ํ•˜๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” <a id="answer_{{ answer.id }}"></a> ์•ต์ปค ํƒœ๊ทธ ์ถ”๊ฐ€

+ answer_{{ answer.id }}์ฒ˜๋Ÿผ ๋‹ต๋ณ€ id ์‚ฌ์šฉ  -->  ์•ต์ปค ํƒœ๊ทธ์˜ name ์†์„ฑ์ด ์œ ์ผํ•œ ๊ฐ’์ด์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

 

 

 

 

# ๋‹ต๋ณ€ redirect

1. projects\mysite\pybo\views\answer_views.py ํŒŒ์ผ์„ ์—ด๊ณ  answer_views.py์˜ answer_create, answer_modify, answer_vote ํ•จ์ˆ˜๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •

+ ๋‹ต๋ณ€์„ ๋“ฑ๋ก, ์ˆ˜์ •ํ•  ๋•Œ ์œ„์—์„œ ์ง€์ •ํ•œ ์•ต์ปค ํƒœ๊ทธ๋กœ ์ด๋™ํ•˜๋„๋ก ์ฝ”๋“œ ์ˆ˜์ •

 

 

 

2. http;//localhost:8000/pybo/ ํŽ˜์ด์ง€๋ฅผ ํ˜ธ์ถœ  -->  ์ˆ˜์ •ํ•œ ํ›„ ๋‹ต๋ณ€์„ ๋“ฑ๋กํ•  ๋•Œ ์Šคํฌ๋กค์ด ์ง€์ •ํ•œ ์•ต์ปค๋กœ ์ด๋™ํ•จ์„ ํ™•์ธ ๊ฐ€๋Šฅ

์ƒ์„ธ ํ™”๋ฉด์˜ URL ์— #answer_5 ๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ์Šคํฌ๋กค์ด ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™ํ•จ

 

 

 

 

# ๋งˆํฌ๋‹ค์šด๊ณผ ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

- ๋งˆํฌ๋‹ค์šด

: ์›น ์‚ฌ์ดํŠธ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ธ€์“ฐ๊ธฐ ๋„๊ตฌ

 

 

- ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•

๋ฆฌ์ŠคํŠธ ๊ฐ•์กฐ ๋งํฌ ์†Œ์Šค์ฝ”๋“œ ์ธ์šฉ
๋ชฉ๋ก ํ‘œ์‹œ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ ํŠน์ • ๊ธ€์ž๋ฅผ
๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
HTML ๋งํฌ
[๋งํฌ๋ช…](๋งํฌ์ฃผ์†Œ)
๊ทœ์น™์„ ์ ์šฉํ•˜์—ฌ ์ƒ์„ฑ
๋ฐฑ์ฟผํŠธ(๋ฐฑํ‹ฑ) ` 3๊ฐœ๋ฅผ ์—ฐ์ด์–ด ๋ถ™์—ฌ
์œ„์•„๋ž˜๋กœ ๊ฐ์‹ธ ์ƒ์„ฑ
>๋ฅผ ๋ฌธ์žฅ ๋งจ ์•ž์—
์ž…๋ ฅํ•œ ํ›„, 1์นธ
๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•œ ๋‹ค์Œ
์ธ์šฉ๊ตฌ ์ž…๋ ฅ
ex.  1. ์ผ
       2. ์ด
       3. ์‚ผ
ex. ๋‚˜๋Š” ํŒŒ์ด์ฌ์ด
์ข‹์•„.
ex. ํŒŒ์ด์ฌ ํ™ˆํŽ˜์ด์ง€๋Š”
http://www.python.org ๋ž๋‹ˆ๋‹ค.
ex. def add(a, b):
return a+b
ex. ๋งˆํฌ๋‹ค์šด์€
Github์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธ€์“ฐ๊ธฐ ๋„๊ตฌ์ด๋‹ค.

 

 

 

 

# ๋งˆํฌ๋‹ค์šด ์„ค์น˜์™€ ์ ์šฉ

1. ํŒŒ์ด๋ณด์— ๋งˆํฌ๋‹ค์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ น ํ”„๋กฌํฌํŠธ๋ฅผ ์—ด์–ด ๋งˆํฌ๋‹ค์šด ๋ชจ๋“ˆ ์„ค์น˜

pip install markdown ๋ช…๋ น์–ด ์‚ฌ์šฉ

 

 

 

2. projects\mysite\pybo\templatetags\pybo_filter.py ํŒŒ์ผ์„ ์—ด์–ด mark ํ•„ํ„ฐ ์ถ”๊ฐ€

Line 1, 3, 12 ~ 15 ์ถ”๊ฐ€

+ << Line 13 >>

: mark ํ•จ์ˆ˜  -->  markdown ๋ชจ๋“ˆ, mark_safe ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ ๋ฌธ์ž์—ด์„ HTML๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•„ํ„ฐ ํ•จ์ˆ˜

 

+ << Line 14 >>

: nl2br  -->  ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ <br> ๋กœ ๋ณ€ํ™˜ํ•ด ์คŒ

: fenced_code  -->  ๋งˆํฌ๋‹ค์šด์˜ ์†Œ์Šค์ฝ”๋“œ ํ‘œํ˜„์„ ์œ„ํ•ด ํ•„์š”

 

 

 

3. projects\mysite\templates\pybo\question_detail.html ํŒŒ์ผ์„ ์—ด๊ณ  ์งˆ๋ฌธ ์ƒ์„ธ ํ…œํ”Œ๋ฆฟ์— {% load pybo_filter %} ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค ๋งˆํฌ๋‹ค์šด ํ•„ํ„ฐ ์ ์šฉ

Line 2 ์ถ”๊ฐ€, 16 ์ˆ˜์ •

+ << Line 16 >>

: {{ question.content|mark }} ๊ฐ™์€ ๋งˆํฌ๋‹ค์šด ํ•„ํ„ฐ mark ์ ์šฉ

 

 

 

4. projects\mysite\templates\pybo\question_detail.html ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ต๋ณ€ ๋‚ด์šฉ์— ๋งˆํฌ๋‹ค์šด ํ•„ํ„ฐ ์ ์šฉ

Line 48 ์ˆ˜์ •

 

 

 

5. http;//localhost:8000/pybo/ ํŽ˜์ด์ง€๋ฅผ ํ˜ธ์ถœ  --> ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์œผ๋กœ ๊ธ€ ์ž‘์„ฑํ•ด๋ณด๊ธฐ

๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์„ ์ง€์ผœ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚จ

 

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

< django - 23 >  (0) 2022.08.25
< django - 21 >  (0) 2022.08.22
< django - 20 >  (0) 2022.08.17
< django - 19 >  (0) 2022.08.15
< django - 18 >  (0) 2022.08.07