Django๋ ํ์ด์ฌ์ผ๋ก ๋ง๋ค์ด์ง ๋ฌด๋ฃ ์คํ์์ค ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ(web application framework)์ด๋ค.
์ด๋ฒ์๋ CLIํ๊ฒฝ์์ ๋ง๋ ๊ฐ์ํ๊ฒฝ์ ์งํํ๋ค.
๊ฐ์ํ๊ฒฝ ์์ฑ ๋ฐฉ๋ฒ์ ์ด์ ํฌ์คํธ๋ฅผ ํ์ธํ์!
pip install django
๋จผ์ pip install์ ํตํด django๋ฅผ ์ค์นํด ์ค๋ค.
django-admin startproject <ํ๋ก์ ํธ์ด๋ฆ>
๊ทธ ๋ค์ ์์ ๋ช ๋ น์ด๋ฅผ ํตํด project๋ฅผ ์์ฑํ๋ค.
python manage.py runserver
๊ทธ ํ ์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด

์ด๋ ๊ฒ ์๋ฒ๊ฐ ์คํ๋๋ค.
Django์์ App์ ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉํ๋ Python ํจํค์ง์ด๋ค.
๐ํ๋์ ์ฑ์ ๊ทธ ์์์ ๋ ์์ ์ธ ๋ชจ๋ธ(Model), ํ ํ๋ฆฟ(Template), ๋ทฐ(View) ๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ํ๋์ Django ํ๋ก์ ํธ๋ ๋ชจ๋ํ๋ ์ฌ๋ฌ ๊ฐ์ ์ฑ๋ค๋ก ๊ตฌ์ฑ๋๋ค.
ํ๋ก์ ํธ๊ฐ ์๋ ํด๋ ๋๋ ํ ๋ฆฌ ์์์ ์งํํ๋ค.
django-admin startapp <app_name>
์ด๋ฐ ์์ผ๋ก homepage์ฑ์ ๋ง๋ค๊ณ ๋๋ฉด
homepageํด๋๊ฐ ํ๋ ๋ง๋ค์ด ์ง๋๋ฐ ๊ทธ ์์ model.py๋ ํํ์ด์ง ๋ชจ๋์์์ ์ฐ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง ๋ฑ๋ฑ์ ํด๋์คํํ๋ก ์ ์ฅํด๋๋๋ค.
๐กDjango ๊ด๋ฆฌ์ ๊ณ์ ์์ฑ
์ฅ๊ณ ๋ ๊ด๋ฆฌ์ ๊ณ์ ์ด ์์ฑ์ด ๊ฐ๋ฅํ๋ฐ ๊ณ์ ์์ฑ ์ ์ ๋จผ์
๋ฐ์ ๋ช
๋ น์ด๋ฅผ ์คํํด ์ค์ผํ๋ค.
python manage.py migrate
์ด ๋ช ๋ น์ด๋ฅผ ํตํด default๋ก ๋ง๋ค์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ ๋ํ ์ฌ๋ฌ ์ ๋ณด๊ฐ ๋ฐ์๋๊ฒ ๋๋ค.
winpty python manage.py createsuperuser
๊ทธ ํ ์ ๋ช ๋ น์ด๋ฅผ ์คํํด์ฃผ๋ฉด http://127.0.0.1:8000/admin/์์ ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ํ๋ฉด ์ถ๊ฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด์๋ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.

์ฅ๊ณ ๋ MTV(Model - Template - View) ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํ๋ ์์ํฌ์ด๋ค. MTVํจํด์ด๋ Model(๋ฐ์ดํฐ), Template(์ฌ์ฉ์ ์ธํฐํ์ด์ค), View(๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง)์ ๊ตฌ๋ถํ์ฌ ํ ์์๊ฐ ๋ค๋ฅธ ์์๋ค์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ก ์ค๊ณํ ๋ฐฉ์์ด๋ค.
views.py๋ผ๋ ํ์ผ ์์ renderํจ์๋ฅผ ์ด์ฉํ์ฌ handlingํ ์ ์๋ค.
๊ฐ๋จํ ์์์ด๋ค.
๋จผ์ htmlํ์ผ์ ๋ง๋ค์ด์ค๋ค.
<!DOCTYPE html>#์ด htmlํ์ผ์ด html5๋ก ์ ์ฅ๋จ์ ์ ์ ์์
<html>
<head>
<title>Python django example</title>
</head>
<body>
<h1>Title</h1>
<p>blah blah blah</p>
</body>
</html>
๊ทธ ํ views.pyํ์ผ์
def index(request):
#return HttpResponse("<h1>Hello World</h1>")
render(request, 'inedex.html',{})
์ ์์ฑํด์ค ๋ค, settings.py์ TEMPLATES์ DIRS๋ฅผ ์
๋ฐ์ดํธ ํด์ผ ํ๋ค.
BASE_DIR์ ์ด ์นํ๋ก์ ํธ์ ๊ฒฝ๋ก๊ฐ ์ ์ฅ๋์ด์๋๋ฐ ์ด๋ฅผ ์ด์ฉํ๋ค.
'DIRS': [ os.path.join(BASE_DIR,'homepage','template')],
#์ด๋ ๊ฒ ์ถ๊ฐ
์ถ๊ฐ๋ก ํ ํ๋ฆฟ๋ณ์์ ์ ์ฉํ ์ ์๋ ํ ํ๋ฆฟ ํํฐ๊ฐ ์๋๋ฐ ๋ฐ์ ์์๋ฅผ ๋ณด์.
<p>{{my_name | length}}</p> myname์ length๋ผ๋ ํํฐ ์ ์ฉ
myname์ ๊ธธ์ด๊ฐ ๋ฐํ๋จ
<p>{{my_name | upper}}</p>
ํ
ํ๋ฆฟ ํ๊ทธ
for ํ๊ทธ
{% for element in my_list %}
<p>{{element}}</p>
{% endfor %}
if ํ๊ทธ ์ง์๋ง ์ถ๋ ฅ
{% for element in my_list %}
{% if element|divisibleby:"2" %}
<p>{{element}}</p>
{% endif %}
{% endfor %}
if not ์ if ๋ค์ not๋ง ๋ถ์ด๋ฉด ๋จ
์ด ํ ์๋ฒ๋ฅผ ์คํํด์ฃผ๋ฉด html์์ฑํ ํ์๋๋ก ์คํ๋๋ค.
๋~!