โ๏ธ 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. ์ด์ 1 2 3 4 ๋ค์