๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

โœ’๏ธ Python Programming/Frameworks23

< django - 11 > 11. ํ…œํ”Œ๋ฆฟ ์ƒ์†๊ณผ ํ‘œ์ค€ HTML ๊ตฌ์กฐ # ํ‘œ์ค€ HTML ๊ตฌ์กฐ -> HtML5 ๋ฌธ์„œ์ž„์„ ์•Œ๋ฆฌ๋Š” ์ง€์‹œ์–ด ๋ฌธ์„œ์˜ ๋ณธ๋ฌธ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ํ…Œ์ด๋ธ”, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ, ๋™์˜์ƒ ๋“ฑ --> ๊ด€๋ จ ํฌ์ŠคํŠธ : https://alim11.tistory.com/70?category=985847 - ํƒœ๊ทธ : , ๋“ฑ - ์—˜๋ฆฌ๋จผํŠธ : ~ ์ฒ˜๋Ÿผ ํƒœ๊ทธ์™€ ํƒœ๊ทธ ์‚ฌ์ด์˜ ๋‹ซํžŒ ๊ตฌ๊ฐ„(Block). ํƒœ๊ทธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ๊ตฌ๊ฐ„์˜ ๊ฒฝ์šฐ table ์—˜๋ฆฌ๋จผํŠธ๋ผ๊ณ  ํ•œ๋‹ค. # ํ…œํ’€๋ฆฟ ์ƒ์†(extend) : ๊ธฐ๋ณธ ํ‹€์ด ๋˜๋Š” ํ…œํ”Œ๋ฆฟ์„ ๋จผ์ € ์ž‘์„ฑํ•œ ํ›„ ๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ์—์„œ ๊ทธ ํ…œํ”Œ๋ฆฟ์„ ์ƒ์†ํ•˜์—ฌ ์‚ฌ์šฉ 1. ๊ธฐ๋ณธ ํ‹€์˜ ์—ญํ• ์„ ํ•  base.html ํ…œํ”Œ๋ฆฟ์„ ํŒŒ์ผ ์ด๋ฆ„์„ projects/mysite/templates/base.html ์œผ๋กœ ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. +.. 2022. 8. 4.
< django - 10 > 10. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์„ค์น˜ ๋ฐ ์ ์šฉ # ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์„ค์น˜ ๋ฐ ์งˆ๋ฌธ ๋ชฉ๋ก์—์˜ ์ ์šฉ 1. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์„ค์น˜ -> projects\mysite\templates\pybo\question_list.html ํŒŒ์ผ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์ ์šฉ + ์ฝ”๋“œ์˜ ๋งจ ์œ„์— {% load static %} ์ถ”๊ฐ€ํ•จ 2. ํ…œํ”Œ๋ฆฟ์ด ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์•„๋ž˜์ฒ˜๋Ÿผ projects\mysite\templates\pybo\question_list.html ํŒŒ์ผ์„ ์ˆ˜์ • + ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์งˆ๋ฌธ ๋ชฉ๋ก์„ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ + ์ž‘์„ฑ์ผ์‹œ ํ•ญ๋ชฉ๊ณผ ๋ฒˆํ˜ธ ์ถ”๊ฐ€ (Line 7 ~ 9) + Line 16์˜ {{ forloop.counter }}๋Š” for ๋ฌธ์˜ ํ˜„์žฌ ์ˆœ์„œ๋ฅผ ์˜๋ฏธ + class="container my-3", class="table",.. 2022. 8. 4.
< django - 9 > 9. ์Šคํƒœํ‹ฑ + CSS + ์Šคํƒ€์ผ์‹œํŠธ์™€ ํ…œํ”Œ๋ฆฟ์— ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ # ์Šคํƒœํ‹ฑ(Static) ๋””๋ ‰ํ„ฐ๋ฆฌ - ์Šคํƒ€์ผ์‹œํŠธ ํŒŒ์ผ์€ ์žฅ๊ณ ์˜ ์Šคํƒœํ‹ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ 1. config/settings.py ํŒŒ์ผ์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ • + STATICFILES_DIRS ์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ + STATICFILES_DIRS ์— BASE_DIR / 'static' ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 2. static ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ + BASE_DIR / 'static'์€ C:\projects\mysite\static ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์˜๋ฏธ # ์Šคํƒ€์ผ์‹œํŠธ์™€ ํ…œํ”Œ๋ฆฟ์— ์Šคํƒ€์ผ ์ ์šฉํ•˜๊ธฐ 1. style.css ํŒŒ์ผ์„ ํŒŒ์ผ๋ช…์„ projects\mysite\static\style.css ์œผ๋กœ ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ + ํŒŒ์ผ ์† ์ƒ์„ธํ™”๋ฉด์— ์ ์šฉํ•  ์Šคํƒ€์ผ์„ ์ •.. 2022. 8. 3.
< django - 8 > 8. ๋ฐ์ดํ„ฐ ์ €์žฅ + ๋‹ต๋ณ€๋“ฑ๋ก ํผ + URL ๋งคํ•‘ + ๋ทฐ ํ•จ์ˆ˜ + ๋‹ต๋ณ€ ์ €์žฅ + ๋‹ต๋ณ€ ์กฐํšŒ # ๋‹ต๋ณ€๋“ฑ๋ก ํผ - ์งˆ๋ฌธ ์ƒ์„ธ ํƒฌํ”Œ๋ฆฟ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ต๋ณ€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•œ ํผ(form) ์ถ”๊ฐ€ + ๋‹ต๋ณ€ ๋‚ด์šฉ ์ž…๋ ฅํ•˜๋Š” ๊ณต๊ฐ„์ธ ํ…์ŠคํŠธ์ฐฝ(textarea), ๋‹ต๋ณ€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•œ "๋‹ต๋ณ€๋“ฑ๋ก" ๋ฒ„ํŠผ์ด ์ถ”๊ฐ€๋จ + line 6์˜ {% url 'pybo:answer_create' question.id %} --> form ํƒœ๊ทธ์˜ action ์†์„ฑ์— ์žˆ๋Š” ๋‹ต๋ณ€ ์ €์žฅ์„ ์œ„ํ•œ URL + line 7์˜ {% csrf_token %} --> form์—์„œ ์ž‘์„ฑํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์›นํŽ˜์ด์ง€์—์„œ ์ž‘์„ฑํ•œ ๋ฐ์ดํ„ฐ์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์—ญํ• ์„ ํ•จ. ๋งŒ์•ฝ ์›นํŽ˜์ด์ง€์—์„œ ์ž‘์„ฑํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ ๋ฐœํ–‰ํ•œ csrf_token ๊ฐ’๊ณผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž‘์„ฑ๋œ csr.. 2022. 8. 1.
< django - 7 > 7. URL ํ•˜๋“œ์ฝ”๋”ฉ + URL ๋ณ„์นญ + URL ๋„ค์ž„์ŠคํŽ˜์ด์Šค # URL ํ•˜๋“œ์ฝ”๋”ฉ : ํ•ด๋‹น URL์— ๋Œ€ํ•œ ์‹ค์ œ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, URL ๋งํฌ์˜ ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ( URL ๋ฆฌํŒฉํ† ๋ง ) ํ…œํ”Œ๋ฆฟ์—์„œ ์“ด ๋ชจ๋“  URL๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ --> ๋งํฌ ์ฃผ์†Œ๊ฐ€ 1๋Œ€ 1๋กœ ๋งคํ•‘๋œ ์ƒํƒœ์ธ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ # URL ๋ณ„์นญ : URL ๋งคํ•‘์— name ์†์„ฑ์„ ๋ถ€์—ฌํ•˜๋ฉด ๋งํฌ ์ฃผ์†Œ ๋Œ€์‹  ๋ณ„์นญ ์‚ฌ์šฉ ๊ฐ€๋Šฅ - pybo/urls.py ํŒŒ์ผ์„ ์•„๋ž˜ ๊ฐ™์ด ์ˆ˜์ • + http://localhost:8000/pybo/ URL์€ index, http://localhost:8000/pybo/2์™€ ๊ฐ™์€ URL์—๋Š” detail ์ด๋ผ๋Š” ๋ณ„์นญ ๋ถ€์—ฌ # ํ…œํ”Œ๋ฆฟ์—์„œ์˜ URL ๋ณ„์นญ ์‚ฌ์šฉ - ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ pybo/urls.p.. 2022. 8. 1.
< django - 6 > 6. ์งˆ๋ฌธ ๋ชฉ๋ก + ํ…œํ”Œ๋ฆฟ ๋””๋ ‰ํ„ฐ๋ฆฌ + ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ + ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ ์œ ํ˜• + views.py + urls.py + ์˜ค๋ฅ˜ ํŽ˜์ด์ง€์™€ ์‘๋‹ต ์ฝ”๋“œ # ์งˆ๋ฌธ ๋ชฉ๋ก : http://localhost:8000/pybo/ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ ์งˆ๋ฌธ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ 1. pybo/views/py ํŒŒ์ผ์˜ index ํ•จ์ˆ˜๋ฅผ ์•„๋ž˜๊ฐ™์ด ๋ฐ”๊พผ๋‹ค. + ์งˆ๋ฌธ ๋ชฉ๋ก์˜ ๋ฐ์ดํ„ฐ๋Š” Question.objects.order_by('-create_date') ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Œ + order_by('-create_date') --> ์ž‘์„ฑ ์ผ์‹œ๋ฅผ ์—ญ์ˆœ(=์ตœ์‹ ์ˆœ)์œผ๋กœ ์ •๋ ฌ ( ์—ฌ๊ธฐ์„œ ๋งˆ์ด๋„ˆ์Šค( - ) ๊ธฐํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ์—ญ๋ฐฉํ–ฅ, ์—†์œผ๋ฉด ์ˆœ๋ฐฉํ–ฅ ์ •๋ ฌ ) + render ํ•จ์ˆ˜ : ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ…œํ”Œ๋ฆฟ์— ์ ์šฉํ•˜์—ฌ HTML๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ + ํ…œํ”Œ๋ฆฟ(Templ.. 2022. 7. 30.