pyhub
@pyhub
Students
3,154
Reviews
154
Course Rating
4.8
ํ์ด์ฌ๊ณผ ์ฅ๊ณ ์ ์ง์ฌ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ์
ํ์ด์ฌ/์ฅ๊ณ ์ง๋ต ๋ฐ ๊ต์ก์๋น์ค, ํ์ด์ฌ ์ฌ๋๋ฐฉ ์ฃผ์ธ์ฅ
ํ์ด์ฌ ์ฌ๋๋ฐฉ with Django/React ์ปค๋ฎค๋ํฐ (๊ตฌ. Ask Django) ์ด์์
(์ ) Microsoft Azure MVP ์ด์๋ ์์ (2016๋ ~2022๋ )
๋์ธ ํ๋
์คํ๋ผ์ธ ๊ต์ก : SKํ ๋งํฌ, LS๊ทธ๋ฃน, ์ผ์ฑ ๋์คํ๋ ์ด, ๋ถ์ฐ๋ํ๊ต ์ ๋ณดํ๋ณธ๋ถ, ์์ธ๋ํ๊ต ๋ฒค์ฒ๊ฒฝ์ํ์ฐํฉ์ ๊ณต, ํจ์คํธ์บ ํผ์ค ์น์๋น์ค ๊ฐ๋ฐ ์บ ํ 3๊ธฐ ๋ฑ
๊ธฐ์ ์๋ฌธ : ์ ํด๋ฆฌ๋์ํํธ, ๋ถ์ฐ๋ํ๊ต, ํ๊ตญ์ฐ์ ๊ธฐ์ ํ๊ฐ๊ด๋ฆฌ์, ํ๊ตญ๋ฐฉ์กํต์ ์ ํ์งํฅ์ ๋ฑ
์ฌ๋ฌ๋ถ์ ํ์ด์ฌ/์ฅ๊ณ /๋ฆฌ์กํธ ํ์ด์ค๋ฉ์ด์ปค๊ฐ ๋๊ฒ ์ต๋๋ค. ๐
Courses
Reviews
- Introduction to Python Django: Starting with Django's Design Philosophy
- Building a Web Chat Service with Python/Django (Feat. Channels) - Basic Course
khyunglee9396
ยท
The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)dbnoid
ยท
The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)asdzxczxcasc
ยท
The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)The Complete Guide to Python/Django Web Service Development with React (Based on Django 4.2)
Posts
Q&A
(์ง๋ฌธ)KG์ด๋์์ค ํ์ ์ฐจ๋จ ๋ฌธ์ ๋ฐ์(๊ฐ์ 13. ์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก ํฌํธ์ ๊ฒฐ์ ๊ตฌํํ๊ธฐ, 7๋ถ18์ด)
์๋ ํ์ธ์. :-) ์ฐ์ ์ง๋ฌธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.inicis ์ ๊ฒฝ์ฐ์๋ง ํ์ ์ฐจ๋จ์ผ๋ก ์ธํด ๊ฒฐ์ ๊ฐ ์งํ๋์ง ์์ ์ํฉ์ ํ์ ํด๋ณด๋, ์ฅ๊ณ ๊ธฐ๋ณธ์์๋ Cross-Origin-Opener-Policy ํค๋๊ฐ ๋ํดํธ๋ก same-origin ์ด๋ผ์, ์๋ก ์ฐ Cross-Origin ๋ฌธ์๋ window.opener ๊ฐ์ด null์ด ๋๋๋ผ๊ตฌ์. ๊ทธ๋์ ํ์ ์ด ์ด๋ ธ์ง๋ง, ํ์ ์ ์ ์ดํ ์ ์๋ ์ํฉ์ด์์ต๋๋ค. ์ด ํค๋๋ฅผ "same-origin-allow-popups" ๋ก ๋ณ๊ฒฝํ์๋ฉด, button ์ ํตํ ๋ฉ์๋ ํธ์ถ์ ํ์ง ์์ผ์ ๋ inicis ๊ฒฐ์ ์์ ํ์ ์ด ์ ์ด๋ฆฌ์ค ๊ฒ๋๋ค.mdn ๋ฌธ์ : https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cross-Origin-Opener-Policydjango 4.0 ๋ถํฐ cross-origin-opener-policy ์ค์ ์ด ์ง์๋์๊ณ , ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ 2020๋ 5์ ์์ ๋ถํฐ ์ด ํค๋๋ฅผ ์ง์ํ ๊ฒ์ผ๋ก ๋ณด์ฌ์ง๋๋ค.https://github.com/django/django/blob/67d0c4644acfd7707be4a31e8976f865509b09ac/django/conf/global_settings.py#L645์ฅ๊ณ ํ๋ก์ ํธ ์ ์ญ์ผ๋ก Cross-Origin-Opener-Policy ํค๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ณด์์ ์ข์ง ์๊ตฌ์.์๋์ ๊ฐ์ด ์ฅ์์ ํจ์๋ฅผ ๋ง๋ค์ด๋์๊ณ ,(์ฌ์ง)ํ์ ํ์ฉ์ด ํ์ํ View ํจ์์๋ง ์๋์ ๊ฐ์ด ์ ์ฉํด๋ณด์๋ฉด ์ข์ผ์ค ๋ฏ ํฉ๋๋ค.(์ฌ์ง)์ดํด๋ณด์๊ณ , ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.์ด์ง์ ๋๋ฆผ. :-)
- 1
- 2
- 104
Q&A
pycharm ๋ฆฌ๋ค์ฝ๋
๋ฐฉ๊ธ ๋ฉ์ผ ๋ณด๋ด๋๋ ธ์ต๋๋ค.ํ์ธ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค. :-) ์ดํด๋ณด์๊ณ ๋ฑ๋ก์ด ์ ์ ๋์๋ฉด, ์ ๋ฌ๋๋ฆฐ ๋ฉ์ผ๋ก ํ์ ๋ถํ๋๋ฆฝ๋๋ค.๊ฐ์ฌํฉ๋๋ค.์ด์ง์ ๋๋ฆผ
- 0
- 2
- 55
Q&A
08-14 FormView ๊ด๋ จ ์ง๋ฌธ
์๋ ํ์ธ์.FormView์์ ModelForm์ ๋ชป ์ธ ์ด์ ๋ ์ ํ ์๊ตฌ์. ๊ฐ์์์๋ ๋จ์ง ModleForm์ด ์๋ Form์ ์ฌ์ฉํ๋ ํ๊ฒฝ์์๋ ์ด๋ ๊ฒ ์ ์ฅ์ ๊ตฌํํจ์ ๋ณด์ฌ๋๋ฆฌ๊ธฐ ์ํจ์ด์์ต๋๋ค.ModelForm์ ์ฐ์ค ๋์๋ ๋ณด์ฌ์ฃผ์ ์ฝ๋๋๋ก ๊ตฌํํ์๋ฉด, ํผํํธํฉ๋๋ค. ๐์ง๋ฌธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. :-)
- 0
- 1
- 66
Q&A
07-01 IPv4AddressIntegerField ์ง๋ฌธ
์๋ ํ์ธ์.๋ต๋ณ์ด ์กฐ๊ธ ๋ฆ์ด ์ฃ์กํฉ๋๋ค.์ฑ์ง๋๊ป์ ๋ง์ํ์ ๋ด์ฉ์ด ๋ง๊ตฌ์. ์ ๊ฐ ์กฐ๊ธ ๋ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค. :)get_prep_value ๋ฉ์๋์ฅ๊ณ ๋ด๋ถ์๋ SQL Compiler๋ฅผ ํตํด SQL์ ์์ฑํฉ๋๋ค. save, create ์ธ์๋ ์กฐํ ์์๋ ๋ชจ๋ธ ํ๋ ๊ฐ ์ฐธ์กฐ๊ฐ ํ์ํ๋๊น์. ํด๋น ๋ชจ๋ธ ํ๋๋ฅผ ํตํด SQL์ ์์ฑํ ๋ get_prep_value ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.ex) ๋ชจ๋ธ ํ๋์์๋ bool ํ์ ์ด์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ 'Y', 'N' ๋ฌธ์์ด๋ก ์ ์ฅ์ฝ์ ํ ๋์ True -> 'Y', False -> 'N' ๋ณํ์ด ํ์ํ๊ฒ ์ต๋๋ค.from_db_value ๋ฉ์๋๋ฐ๋๋ก ์ฅ๊ณ ๋ชจ๋ธ/์ฟผ๋ฆฌ์ ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ์ด์จ ํ๋๊ฐ์ from_db_value ๋ฉ์๋๋ฅผ ํตํด, ๊ทธ ๋ชจ๋ธ ํ๋ ์ฑ๊ฒฉ์ ๋ง๋ ๊ฐ์ผ๋ก ๋ณํํฉ๋๋ค.ex) ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ 'Y', 'N' ๋ฌธ์์ด๋ก ์ ์ฅํ์ง๋ง, ์ฅ๊ณ ๋ชจ๋ธ ๋จ์์๋ bool ํ์ ์ผ๋ก ์ฒ๋ฆฌ์ฝ์ ํ ๋์, 'Y' -> True, 'N', -> False ๋ณํ์ด ํ์ํ๊ฒ ์ต๋๋ค.to_python์ด๋ค ๊ฐ์ ํด๋น ๋ชจ๋ธ ํ๋์ ํ์ํ ํ์ /๊ฐ์ผ๋ก ๋ณํํ๋ ๋ฉ์๋์ ๋๋ค. ํ์ฉ๋ ๋ฒ์์ ๊ฐ์ด ์๋๋ผ๋ฉด ValudationError๋ฅผ ๋ฐ์์์ผ์ผ ํฉ๋๋ค.ex) DateTimeField : datetime ๊ฐ์ฒด์ธ๋ฐ, ์ฅ๊ณ ํ๋ก์ ํธ์์๋ timezone ์ง์์ด ์ผ์ ธ์๋ค๋ฉด, timezone์ด ์๋ datetime ๊ฐ์ฒด๋ก ๋ณํ๋ชจ๋ธ์ clean ๋ฉ์๋์ choices ์ต์ ์ง์ ์์๋ ๊ฐ ๋ณํ์ ๋ชฉ์ ์ผ๋ก ํธ์ถ๋ฉ๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธ ํ๋์ ๋ฐ๋ผ get_prep_value ๋ฉ์๋์์ to_python ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๊ฐ ๋ณํ์ ํ๊ธฐ๋ ํฉ๋๋ค.--์ข์ ์ง๋ฌธ ์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฌ๊ตฌ์. ์ดํด๋ณด์๋ค๊ฐ ๋ ๊ถ๊ธํ ์ ์์ผ์๋ฉด ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.ํ์ดํ ์ ๋๋ค. :-)
- 0
- 1
- 73
Q&A
nextjs git ๊ด๋ฆฌ?
์๋ ํ์ธ์.Mono/Multi Repo์ ๋ํ ๋ถ๋ถ์ ์ ๋ต์ ์๊ณ , ํ์ด์ค๋ถ๊ณผ ๊ฐ์ ๊ณณ์์๋ ์ด๋ค ๋ฐฉ๋ฒ์ด ์ข์๊น์ ๋ํด์ ๊ณ์ ๊ณ ๋ฏผํ๊ณ ์ํฉ์ ๋ฐ๋ผ ๋ฐ๊ฟ๊ฐ๋๋ผ๊ตฌ์.Mono Repo๋ Django์ Next.js ๋ฅผ ํ๋์ ํ์์ ๊ฐ๋ฐํ๊ณ , ํ๋ก ํธ/๋ฐฑ์๋ ๋์ ์์ ์ด ์ฆ๊ณ , ํ๋ก์ ํธ ์ ์ฒด ๊ตฌ์กฐ ํ์ ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ํํด๋ณผ ์ ์๊ฒ ๊ตฌ์.Multi Repo๋ Django ํ๊ณผ Next.js ํ์ด ๋ช ํํ ๋ถ๋ฆฌ๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ๊ฐ ํ์ ๊ถํ ๊ด๋ฆฌ๊ฐ ์ค์ํ ๊ฒฝ์ฐ์ Multi Repo๋ฅผ ์ ํํด๋ณด์ค ์ ์์ผ์๊ฒ ์ต๋๋ค.์ฒ์ ์์ํ์ ๋ค๋ฉด Mono Repo๋ก ์์ํด๋ณด์๊ณ , Repo ๋ถ๋ฆฌ์ ํ์์ฑ์ด ๋๊ปด์ง์ค ๋, Mutl Repo๋ฅผ ๊ณ ๋ฏผํด๋ณด์๋ฉด ์ด๋จ๊น์?์ดํด๋ณด์๊ณ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.ํ์ดํ ์ ๋๋ค. :-)
- 0
- 1
- 67
Q&A
14-08 ์์ ํ์ธ ์์ฒญ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์.์ฒซ๋ฒ์งธ ์ค์ท์ ์ฝ๋๋ Next.js ์ฝ๋๋ก์ ์๋ฒ ๋จ์์ ์ฅ๊ณ ์๋ฒ๋ก fetch ํธ์ถํ๋ ํ๋ ์ฝ๋์ ๋๋ค. Next.js ์์๋ getServerSideProps ํจ์๋ ์๋ฒ ๋จ์์ ํธ์ถ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ ์ธ์ฆ์ ์ํด์, ์ฅ๊ณ ์์ฒญ์ sessionid ์ฟ ํค๋ฅผ ์์ฒญ ํค๋์ ๋ด์์ ๋ณด๋์ด์ผ ํ๊ตฌ์.(์ฌ์ง)๊ทธ ๋ค์์ ๋ณด์ฌ์ฃผ์ ์ฝ๋๋ ์น๋ธ๋ผ์ฐ์ ๋จ์์ ์ํ๋๋ fetch ์ฝ๋์ ๋๋ค. ์น ๋ธ๋ผ์ฐ์ ๋จ์์ ํธ์ถ์ ํ๋, ๋ธ๋ผ์ฐ์ ์์ ์์์ sessionid ์ธ์ ์ฟ ํค๋ฅผ ์ ์กํด์ฃผ๋๊น ๋ณ๋๋ก ํค๋ ์ค์ ์ด ํ์์๋ ์ํฉ์ด ๋ ๊ฒ์ ๋๋ค.(์ฌ์ง)๊ฐ์ JS ์ฝ๋์ด์ง๋ง, ์ด๋ ๋จ๊ณ์์ ์ํ๋๋ ์ง์ ๋ฐ๋ผ ํ์ํ ์ค์ ์ด ๋ฌ๋ผ์ง๋๋ค.์ดํด๋ณด์๊ณ , ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค.์ง๋ฌธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. :-)
- 0
- 2
- 82
Q&A
14-07์์ SESSION_COOKIE_DOMAIN = None ์ฒ๋ฆฌ ํ์.
14-06 ์์์์ ์๋์ ๊ฐ์ด ์ค์ ์ ํ ์ด์ ๋SESSION_COOKIE_DOMAIN = env.str("SESSION_COOKIE_DOMAIN", default=None) or NoneSESSION_COOKIE_DOMAIN ํ๊ฒฝ๋ณ์๊ฐ ์์ผ๋ฉด ์ฝ์ด์ settings์ ๋ฐ์ํ๊ธฐ ์ํจ์ ๋๋ค.๊ทธ๋ฐ๋ฐ, SESSION_COOKIE_DOMAIN ํ๊ฒฝ๋ณ์๊ฐ ๋น ๋ฌธ์์ด์ด ๋ค์ด์๋ ๊ฒฝ์ฐ์๋ django-environ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๊ฐ์ด ์๋ ๊ฒ์ผ๋ก ํ๋จํ๊ธฐ์ None ๊ฐ์ด ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ, ๋น ๋ฌธ์์ด๋ก์ settings.SESSION_COOKIE_DOMAIN = "" ๊ฐ์ด ๋ฉ๋๋ค. ๋น ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ์๋ None ๊ฐ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ๋์ or None ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค. "" or None ์ ํ๊ฐ๋ None์ด ๋๊ฑฐ๋ ์.settings.SESSION_COOKIE_DOMAIN ์ค์ ์๋ ๋ฐ๋์ None ์ด๊ฑฐ๋ ์ง์ ๋๋ฉ์ธ์ด ๋ค์ด๊ฐ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด csrf ์ฒดํฌ์์ ์๋ฑํ๊ฒ ๋์ํฉ๋๋ค.์๋๋ django/middleware/csrf.py ์ฝ๋ ์ค ์ผ๋ถ์ ๋๋ค.(์ฌ์ง)https://github.com/django/django/blob/a3b1107a4955bdd994908efb4c6e1d03c281e69f/django/middleware/csrf.py#L322settings.SESSION_COOKIE_DOMAIN ๊ฐ์ None์ผ๋ก ํ๋์ฝ๋ฉํ์ จ์ ๋ ์ ๋์ํ์ ๋ค๋ฉด,settings.SESSION_COOKIE_DOMAIN ๊ฐ์ด ํ๊ฒฝ๋ณ์ ๊ฐ์ผ๋ก ์ธํด ์๋ง ๋ค๋ฅด๊ฒ ์ง์ ๋์ง ์์ผ์ จ์๊น ์ถ์ด์.์ฅ๊ณ ์์ ๊ตฌ๋ํ์ ์ ์๋ ๊ฐ์ ํ์ธํด๋ณด์ จ์ผ๋ฉด ํฉ๋๋ค.from django.conf import settingsprint(repr(settings.SESSION_COOKIE_DOMAIN))ํ์ธํด๋ณด์๊ณ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. :-)
- 0
- 2
- 68
Q&A
pycharm ํ๋ก ์๋์
์๋ ํ์ธ์.์ ๊ท JetBrains ๊ณ์ ์ ๋ํด 1๋ฌ ์ฒดํ ๊ณ์ ์ ์์ง๋ ์ฌ์ ํ ์ง์๋๊ณ ์์ต๋๋ค. ์๋ก์ด ์ด๋ฉ์ผ๋ก JetBrains ๊ณ์ ์ ๋ง๋์ ์ ๋ค์ ํ์ธํด๋ณด์๊ฒ ์ด์?
- 0
- 2
- 138
Q&A
๋ฉ์ผ ์ ์กํ๋ ๋ถ๋ถ์ ์ด๋จ๋ ์ฐ๋๊ฑด๊ฐ์?
์๋ ํ์ธ์.์ฅ๊ณ management command์ ๊ฒฝ์ฐ, call_command ๋ฉ์๋๋ฅผ ํตํด ์ง์ ๋ช ๋ น์ ํธ์ถํ์ค ์ ์์ต๋๋ค.https://docs.djangoproject.com/en/5.2/ref/django-admin/#running-management-commands-from-your-code๊ทธ๋ฐ๋ฐ ์ด๋ฉ์ผ ์ ์ก์ ๊ฒฝ์ฐ, ๋ค์ํ ๊ณณ์์ ์ฌ์ฉ๋ ์ ์์ผ๋ call_command๋ฅผ ์ฐ์๊ธฐ๋ณด๋ค, ๋ณ๋ ํจ์๋ก ๊ตฌํํ์๊ณ management command์์๋ ํจ์๋ฅผ ํธ์ถํด์ ์ฐ์๋ ๊ฒ์ด ๊ด๋ฆฌ์ฑ์ด ๋ ๋์ผ์ค ์ ์์ผ์ค ๋ฏ ํฉ๋๋ค.์ดํด๋ณด์๊ณ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์. :-)
- 0
- 1
- 77
Q&A
๊ณ ๋ฏผ
์๋ ํ์ธ์.์ค๋ 5/13(ํ), ์คํ 10์์ ์๋ zoom ์ผ๋ก ๋ค์ด์ค์ธ์.https://us05web.zoom.us/j/83005494975?pwd=b0XoKw8k4h3ZaLB0lteEa7MVFBqTIz.1๋ค๋ฅธ ๋ถ๋ค๋ ๊ด์ฌ์์ผ์ ๋ถ๋ค์ ๋ค์ด์ค์ ์, ์ธ์ฌ ๋๋์์ฃ . :-) 1์๊ฐ ์ ๋ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
- 0
- 3
- 202







