โ๏ธ Python Programming36 < django - 18 > 18. ๋ชจ๋ธ ๋ณ๊ฒฝ + Question, Answer ์์ฑ ์ถ๊ฐ + author ์ ์ฅ + ๋ก๊ทธ์ธ์ด ํ์ํ ํจ์ + next ์ disable # Question ๋ชจ๋ธ๊ณผ author ์์ฑ - projects\mysite\pybo\models.py ํ์ผ์ ์ด๊ณ Question ๋ชจ๋ธ์ author ์์ฑ์ ์ถ๊ฐ + Line 6์์ author ํ๋๋ User ๋ชจ๋ธ์ ForeignKey ๋ก ์ ์ฉ ํ ์ ์ธ + User ๋ชจ๋ธ --> django.contrib.auth ์ฑ์ด ์ ๊ณตํ๋ ์ฌ์ฉ์ ๋ชจ๋ธ์ผ๋ก, ํ์ ๊ฐ์ ์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ฌ์ฉ + Line 6์ on_delete=models.CASCADE --> ๊ณ์ ์ญ์ ์ ๊ณ์ ์ด ์์ฑํ ์ง๋ฌธ ๋ชจ๋ ์ญ์ + ์ฃผ์! ๋ชจ๋ธ์ ๋ณ๊ฒฝํ ํ์๋ ๊ผญ ๋ช ๋ น ํ๋กฌํฌํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณ๊ฒฝํด์ฃผ.. 2022. 8. 7. < django - 17 > 17. ํ์๊ฐ์ ๊ณผ ํ์๊ฐ์ ๋งํฌ # ํ์๊ฐ์ ๋งํฌ : ํ์๊ฐ์ ์ ํ์ํ ๋งํฌ๋ฅผ projects/mysite/templates/navbar.html ํ ํ๋ฆฟ์ ์๋์ฒ๋ผ ์ถ๊ฐ + ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์์ ์ฐ์ธก์ ํ์๊ฐ์ ๋งํฌ ์ถ๊ฐ + ํ์๊ฐ์ ์ ๋ก๊ทธ์์ ์ํ์ผ ๋์ ํํด ๋ณด์ด๋๋ก ์ค์ ํจ # urls.py : navbar.html ํ ํ๋ฆฟ์ {% url 'common:signup' %} ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ผ๋ ์ฌ๊ธฐ์ ๋์ํ๋ URL ๋งคํ ๊ท์น์ ์ถ๊ฐํด์ผ ํจ - projects\mysite\common\urls.py ํ์ผ์ ์๋์ฒ๋ผ ํ์๊ฐ์ ์ ์ํ ๋งคํ ๊ท์น์ ์ถ๊ฐ --> ๋ก๊ทธ์ธ ํ๋ฉด์์ ํ์๊ฐ์ ๋งํฌ๋ฅผ ๋๋ฅด๋ฉด views.signup ํจ์๊ฐ ์คํ๋๊ฒ ํจ # forms.py - ๊ณ์ ์ ์์ฑํ ๋ ์ฌ์ฉํ UserForm์ pro.. 2022. 8. 7. < django - 16 > 16. django.contrib.auth ์ฑ + ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์ + common ์ฑ + ๋ก๊ทธ์ธ ๋ทฐ + ๋ก๊ทธ์ธ ํ ํ๋ฆฟ # django.contrib.auth ์ฑ : ์ฅ๊ณ ์ ๋ก๊ทธ์ธ, ์์์ ๋์์ฃผ๋ ์ฑ์ผ๋ก, ์ฅ๊ณ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ ๋ ์๋์ผ๋ก ์ถ๊ฐ๋จ # common ์ฑ : ๊ณตํต ๊ธฐ๋ฅ์ ๊ฐ์ง ์ฑ์ผ๋ก, ๋ก๊ทธ์ธ๊ณผ ๋ก๊ทธ์์์ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ 1. ๋ช ๋ น ํ๋กฌํฌํธ์ common ์ฑ์ ์๋ก ์์ฑํ๋ค. + common ์ฑ ์์ฑ ์ pybo ์ฑ๊ณผ ๊ฐ์ ๊ตฌ์กฐ์ ๋๋ ํฐ๋ฆฌ, ํ์ผ๋ค์ด ์๋์ผ๋ก ๋ง๋ค์ด์ง. 2. projects\mysite\config\settings.py ํ์ผ์ ์๋ก ์์ฑํ common ์ฑ์ ๋ฑ๋กํ๋ค. 3. common ์ฑ์ urls.py ํ์ผ์ ์ฌ์ฉํ๊ธฐ ์ํด config/urls.py ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์.. 2022. 8. 6. < django - 15 > 15. ํ ํ๋ฆฟ ํํฐ ์์ฑ ๋ฐ ์ฌ์ฉ + ๊ฒ์๋ฌผ ๋ฒํธ์ ์ค๋ฅ ํด๊ฒฐ + ๋ต๋ณ ๊ฐ์ ํ์ # ํ ํ๋ฆฟ ํํฐ : ํ ํ๋ฆฟ ํ๊ทธ์์ | ๋ฌธ์ ๋ค์ ์ฌ์ฉํ๋ ํํฐ ex. {{ form.subject.value|default_if_none:'' }} # ๊ฒ์๋ฌผ ๋ฒํธ ์ค๋ฅ : http://localhost:8000/pybo/ ๋ฅผ ํธ์ถํ์ ๋ ์๋ ์ฌ์ง์ฒ๋ผ ๊ฒ์๋ฌผ์ ๋ฒํธ๊ฐ ํญ์ 1๋ถํฐ ์์ํ๋ค๋ ๋ฌธ์ ๋ฐ์. (ํ์ด์ง๋ 3์ธ๋ฐ ๊ฒ์๋ฌผ์ 1๋ถํฐ ์์ํ๋ค......) # ๊ฒ์๋ฌผ ๋ฒํธ : ๋ง์ฝ ๊ฒ์๋ฌผ ์ ์ฒด ๊ฑด์๊ฐ 12๊ฐ๋ผ๋ฉด, ์ฒซ๋ฒ์งธ ํ์ด์ง๋ ๋ฒํธ๊ฐ 12~3๊น์ง ์ญ์์ผ๋ก ๋ณด์ฌ์ง๊ณ ๋๋ฒ์งธ ํ์ด์ง์๋ 2~1๊น์ง ๋ณด์ฌ์ ธ์ผ ํจ --> ๋ฒํธ = ์ ์ฒด๊ฑด์ - ์์์ธ๋ฑ์ค - ํ์ฌ์ธ๋ฑ์ค + 1 ex. ์ ์ฒด ๊ฒ์๋ฌผ ๊ฐ์๊ฐ 12, ํ์ด์ง๋น 10๊ฑด์ฉ ๊ฒ.. 2022. 8. 6. < django - 14 > 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 + ๋ง์ฐ์ค ์คํฌ๋กค์ ํตํด ์น ๋ธ๋ผ์ฐ์ ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ฐ์ธก ์๋จ์ ํ๋ฒ๊ฑฐ ๋ฉ๋ด ๋ฒํผ์ด ์๊ธฐ๊ณ ๋ก๊ทธ์ธ ๋งํฌ๊ฐ ์ฌ.. 2022. 8. 5. < django - 13 > 13. ํผ ๋ ์ด๋ธ + ์๋ ํผ ์์ฑ + ๋ต๋ณ ๋ฑ๋ก # ํผ ๋ ์ด๋ธ 1. ์ง๋ฌธ ๋ฑ๋ก ํ๋ฉด์ 'Subject', 'Content'๋ฅผ ์๋ฌธ์ด ์๋ ํ๊ธ๋ก ํ์ํ๊ธฐ ์ํด projects\mysite\pybo\forms.py ํ์ผ์ labels ์์ฑ์ ์ง์ ํ๋ค. 2. http://localhost:8000/pybo/question/create ํ์ด์ง๋ฅผ ํธ์ถํ๋ค. # ์๋ ํผ ์์ฑ 1. ์๋ ํผ์ ์์ฑํ๋๋ฐ ํ์ํ์ง ์์ widget ์์ฑ์ projects\mysite\pybo\forms.py ํ์ผ์์ ์ ๊ฑฐํ๋ค. 2. projects\mysite\templates\pybo\question_form.html ํ์ผ์ ์ง๋ฌธ ๋ฑ๋ก ํ ํ๋ฆฟ์ ์๋์ฒ๋ผ ์์ + ์ ๋ชฉ, ๋ด์ฉ์ ํด๋น๋๋ HTML์ฝ๋๋ฅผ ์ง์ ์์ฑํจ ( Line 22.. 2022. 8. 5. ์ด์ 1 2 3 4 5 6 ๋ค์