Django-base.md
Django framework๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ฉด์ ๊ณต๋ถํ ์ก๋คํ ๊ฐ๋ ๋ค์ ์ ์ ๊ณณ
django ํ๋ก์ ํธ ๊ธฐ๋ณธ์ ์ธ ์์ฑ ๋ฐ ์ค์
# ๊ฐ์ํ๊ฒฝ ์์ฑํ๊ธฐ
$ python3 -m venv [๊ฐ์ํ๊ฒฝ ์ด๋ฆ] #python ๋ด์ฅ ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ธฐ
# in UNIX
$ source [๊ฐ์ํ๊ฒฝ์ด๋ฆ]/bin/activate
# in CMD
$ [๊ฐ์ํ๊ฒฝ์ด๋ฆ]\Scripts\activate
# django ์ค์น
(venv) $ pip install django black # black: python ์๋ ํฌ๋งทํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ
# django ํ๋ก์ ํธ ์์ฑ
(venv) $ django-admin startproject [ํ๋ก์ ํธ ์ด๋ฆ]
(venv) $ cd [ํ๋ก์ ํธ ์ด๋ฆ]
# django ์ฑ ์์ฑ
(venv) $ python manage.py startapp [์ฑ ์ด๋ฆ]
# django ํ๋ก์ ํธ ์คํ
(venv) $ python manage.py runserver
# ํฌํธ๋ฅผ ๋ฐ๊พธ์ด ์คํํ๊ณ ์ถ์ ๋
(venv) $ python manage.py runserver [๋ฐ๊ฟ ํฌํธ]
# localhost๊ฐ ์๋ ๋ค๋ฅธ IP๋ก ์คํํ๊ณ ์ถ์ ๊ฒฝ์ฐ
(venv) $ python manage.py runserver [IP]:[๋ฐ๊ฟ ํฌํธ]
# admin ํ์ด์ง ์ฌ์ฉ์ ์ํด superuser ์์ฑ
(venv) $ python manage.py createsuperuser
... ๋์ค๋ ์ ๋ณด๋ค ์
๋ ฅ...
Superuser created successfully.
๊ฐ์ฅ ๋ฐ๊นฅ์ root directroy๋ ํ๋ก์ ํธ์ ์ปจํ ์ด๋์ผ ๋ฟ์ด๋ผ ์ด๋ฆ์ ๋ฐ๊ฟ๋ ์๊ด์๋ค.
manage.py
: django ํ๋ก์ ํธ์ ์ํธ์์ฉํ command-line utility์์ชฝ์ ํ๋ก์ ํธ์ด๋ฆ์ผ๋ก ๋ง๋ค์ด์ง default app ๋๋ ํ ๋ฆฌ๊ฐ ์ค์ง์ ์ธ ํ๋ก์ ํธ์ ํจํค์ง์ด๋ค.
runserver
๋ฅผ ์คํํ๊ฒ ๋๋ฉด django์์๋ ๊ธฐ๋ณธ์ ์ผ๋กlocalhost:8000
์ผ๋ก ์คํ๋๋ค.
django model queryset
django๋ ORM์ ์ ๊ณตํ๋ค. ORM์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ค๋ ๊ฒ์ ORM์ด ์ฟผ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๋์ง ์ดํดํ๋ ๊ฒ์ด๋ค.
django์ ์ฟผ๋ฆฌ๋ ๋ง์ง๋ง๊น์ง ์ง์ฐ๋๋ค. django์ queryset์ DB์ ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ๋ํ๋ด๊ณ ํํฐ๋ง์ด ๊ฐ๋ฅํ๋ค
person_set = Person.objects.filter(name="Tom")
์ด ์ฝ๋๋ DB์ ์ด๋ค ์ฟผ๋ฆฌ๋ ์ ๋ฌํ์ง ์๋๋ค. ์ด๋ DB์ ์๋ฌด๋ฐ ๋ฉ์์ง๋ ์ ๋ฌํ์ง ์๋๋ค๋ ์ ์์ ์ฅ์ ์ด๋ค. ์๋ํ๋ฉด DB์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ฌํ๋ ์ผ์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ ค์ง๊ฒ ํ๋ ์ฃผ๋ฒ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ด๋ค.
django์ ์ฟผ๋ฆฌ์ ์ ์บ์๋๋ค. django queryset์ ์ํํ๋ ์์ ์์ DB์ ๋ ์ฝ๋๋ฅผ ์ค์ ๋ก ๊ฐ์ ธ์ค๊ณ , ์ด๋ ๋ชจ๋ django ๋ชจ๋ธ๋ก ๋ณํ๋์ด ์บ์๋๋ค(ํ๊ฐ). ๋ฐ๋ผ์ queryset์ ๋ค์ ์ํํ๋๋ผ๋ ๋๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ DB์ ์ฌ๋ฌ๋ฒ ์ ๋ฌํ์ง ์๋๋ค.
if๋ฌธ์ ์ฟผ๋ฆฌ์ ์ ํ๊ฐํ๋ค. ์บ์ ๊ธฐ๋ฅ์ queryset์ ๋ ์ฝ๋๊ฐ ์กด์ฌํ๋์ง๋ฅผ ๊ฒ์ฌํ ํ ํ๋๋ผ๋ ๋ฐ๊ฒฌ๋์์ ๋๋ง ์ํํ๋ ค ํ ๋ ์ ์ฉํ๋ค.
person_set = Person.objects.filter(gender='male')
# if ๋ฌธ์ queryset์ 'ํ๊ฐ'ํ๋ค.
if person_set:
for person in persion_set:
print(person.name)
ํ์ง๋ง, ๊ฒฐ๊ณผ ์ ์ฒด๊ฐ ํ์ํ์ง ์๊ณ ๋จ์ง ๋ ์ฝ๋๊ฐ ์ต์ํ ํ๋๋ ์กด์ฌํ๋์ง ์์๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ if ๋ฌธ์ ์ฌ์ฉํ๋ฉด queryset์ด ํ๊ฐ๋๊ณ queryset ์บ์์ ์ ์ฒด ๋ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๋นํจ์จ์ ์ธ ์์ ์ด ์ผ์ด๋๊ฒ๋๋ค. ์ด๋ด๋๋ exists() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์
person_set = Person.objects.filter(name='Tom')
# if ๋ฌธ์ queryset์ 'ํ๊ฐ'ํ๋ค.
if person_set.exists():
# DB์์ ๊ฐ์ ธ์จ ๋ ์ฝ๋๊ฐ ํ๋๋ ์๋ค๋ฉด ํธ๋ํฝ๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค.
print('Tom exists')
django-rest-framework
django๋ฅผ ์ฌ์ฉํด web API๋ฅผ ๊ฐ๋ฐ ํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ serializer, permisison, authentication, view ๋ฑ์ ๊ธฐ๋ฅ์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Installation
$ pip install djangorestframework
in INSTALLED_APPS
'rest_framework' ์ถ๊ฐ
serializer์์ ์์ฃผ ์ฐ์ด๋ ๋ฉ์๋๋ค์ ๋์ ์์
Last updated