- μμ²κ³Ό μλ΅
- Django μμ²κ³Ό μλ΅
- Django Template
- [μ€μ΅] DTL Syntax
μ΄λ² ννΈμμλ URL-VIEW-TEMPLATE μμΌλ‘ μ½λλ₯Ό μμ±ν΄λ³΄κ³ λ°μ΄ν°μ νλ¦μ μ΄ν΄ν©λλ€.
- μμ²κ³Ό μλ΅μ΄λ?
- μΉ μλΉμ€λ ν΄λΌμ΄μΈνΈ-μλ² μ¬μ΄μ μΉμ λ§€κ°λ‘ μ λ¬λλ μλΉμ€
- μ΄λ¬ν μλΉμ€μ ν¨ν΄μ΄ **μμ²(ν΄λΌμ΄μΈνΈ)κ³Ό μλ΅(μλ²)**μ΄λΌκ³ λ°°μ
- μ€νλΌμΈ μλΉμ€λ μ£Όλ¬Έμ ν¬λ§·(μμ²)μ΄λ μλ΅μ΄ μ²μ°¨λ§λ³μ΄μ§λ§, μΉμΌλ‘ λ°°ν¬λ μλΉμ€λ μ¬λ°κ²λ μμ²(URL)κ³Ό μλ΅(HTML)μ΄ λμΌν ν¨ν΄
- μ) Youtube, Facebook, NAVER λͺ¨λ λμΌν λ°©λ²μΌλ‘ μΉ μλΉμ€ μ 곡
- μ) naver.com/sise μ²λΌ, λλ©μΈ μ΄λ¦μ /sise λΆμ¬μ£Όλ©΄(μμ²) naver κΈμ΅ μ λ³΄κ° λ΄κΈ΄ HTML νμ΄μ§κ° λΈ(μλ΅)
- μ) Google, NAVER μ κ²μμ°½ κΈ°λ₯μ URL μ£Όμμ°½μΌλ‘ μμ² λ³΄λ΄λ νμλ₯Ό λ³΄λ€ κ°νΈνκ² λ§λ€μ΄ μ€
-
Django μμ²κ³Ό μλ΅μ΄λ?
-
μμ²κ³Ό μλ΅ κ³Όμ μμ μλ²λ (1)~(3) μ μ²λ¦¬ κ³Όμ μ κ±°μΉ¨
(1) μ£Όλ¬Έμ μ μ
(2) λ‘μ§ κ΅¬ν
(3) HTML νμ΄μ§ ꡬμ±
-
μ΄κ±Έ νμΌ λ¨κ³μμλ (1)~(3) μ κ³Όμ μΌλ‘ μ΄ν΄ν μ μμ
(1) URL :
urls.pyμ‘°μ(2) VIEW :
views.pyμ‘°μ(3) TEMPLATE :
.htmlνμΌ μμ± λ° μ‘°μ
-
-
Django μμ²κ³Ό μλ΅ μμ½
μλ²μ μλ΅ μ‘°μλλ νμΌ 1 μ£Όλ¬Έμ μ μ urls.py2 λ‘μ§ κ΅¬ν views.py3 HTML νμ΄μ§ κ΅¬μ± .html -
URLs
# urls.py from django.contrib import admin from django.urls import path from articles import views urlpatterns = [ path('admin/', admin.site.urls), path('index/', views.index), ]
-
Views
# articles/views.py def index(request): return render(request, 'index.html')
- HTTP μμ²μ μμ νκ³ HTTP μλ΅μ λ°ννλ ν¨μ μμ±
- Template μκ² HTTP μλ΅ μμμ λ§‘κΉ
-
Django Template
- "λ°μ΄ν° ννμ μ μ΄νλ λꡬμ΄μ ννμ κ΄λ ¨λ λ‘μ§"
- Django Template μ μ΄μ©ν HTML μ μ λΆλΆκ³Ό λμ 컨ν μΈ μ½μ
- Template System μ κΈ°λ³Έ λͺ©νλ₯Ό μμ§
- Django Template System
- λ°μ΄ν° ννμ μ μ΄νλ λꡬμ΄μ ννμ κ΄λ ¨λ λ‘μ§μ λ΄λΉ
- Django Template System
-
Django Template Language (DTL)
# urls.py
# κ΄λ¦¬μ νλ©΄λ§ μΌλ¨ λ§λ€μ΄μ Έ μμ
# κ·Έ μλμ ννμ΄μ§(index.html) path ν¨μ μΆκ°νκΈ°
urlpatterns = [
path('admin/', admin.site.urls),
path([μ£Όλ¬Έμμ΄λ¦], [μ΄λ€ view νμΌμμ(ν¨μμμ) μ μν κ²μΈμ§ - λ‘μ§ κ΅¬νλ νμΌ]),
]
------------------------------------
μμͺ½μ
from articles import views μμ±ν΄μ£Όκ³ ,
urlpatterns = [
path('admin/', admin.site.urls),
# μ£Όλ¬Έμ΄ λ€μ΄μ€λ©΄, views.py μμ index κ° μ μνλλ‘ ν΄λΌ! νλ λͺ
λ Ή
path('index/', views.index),
]
-------------------------------------
# views.py λ‘ μ΄λ
# μμμ μΈκΈνλ― django λ μ μΈν νλ‘κ·Έλλ°μ΄κΈ° λλ¬Έμ
# μ°λ¦¬κ° νκ³ μΆμ μμ
μ "ν¨μ"λ‘ ννλ§ ν΄μ£Όλ©΄ λ¨
from django.shortcuts import render
# Create your views here.
# ν¨μμ 첫λ²μ§Έ μΈμ μ무거λ λ£μ΄λκΈ°(request) : μ무λ κ²λ μ¨λ λκΈ΄ νλλ°, μμ²ν μ¬λμ μ λ³΄κ° λ€μ΄κ°λ μ리λΌμ request λΌκ³ μ°λ κ²
def index(request):
# νμνλ λ©μΈ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
return render(request, 'index.html')
==> μλ―Έ: index λΌλ ν¨μλ₯Ό λ§λ€μ΄ μ£Όλλ°, μ΄ ν¨μμ λμ 무μΈκ°λ₯Ό λ§λ€λ©΄μ λλλ€
-----------------------------------
render(request, [ν
νλ¦Ώμ΄λ¦], context)
render(request, 'index.html', context) μ ꡬ쑰μ
# articles ν΄λ(μ±) λ΄μ
# ν΄λ μΆκ° μμ΄μ½ ν΄λ¦νκ³ templates μ΄λ¦μ ν΄λλ₯Ό μμ±
# (μμΉ, μ΄λ¦ νλ¦¬μ§ μκ² μ‘°μ¬)
# templates ν΄λ μμ index.html νμΌ μΆκ°!
# index.html νμΌμ μ¬μ©μμκ² λ³΄μ¬μ€ ννμ΄μ§ ꡬ쑰 μμ±
-----------------------------------
μ URL, VIEW, TEMPLATE μ ꡬ쑰λ μμΌλ‘λ λ³νμ§ μμ
urls.py, views.py μ λͺ¨λ index λΌλ μ΄λ¦μ΄ ν΅μΌλμ΄ νμ©λκ³ μμμ μ£Όμνμ!
-----------------------------------
μμ κ°μ΄ html μμ±λ μνμμ
Git Bash μ°½μ
python manage.py runserver ν΄λ³΄λ©΄ μ΄μν λΈλΌμ°μ μ°½μ΄ λ¨λλ°
μ΄ μ£Όμμ°½ localhost:8000 <- μ μμ /index/ λΆμ¬μ λ€μ μν°ν€ μΉλ©΄
μ°λ¦¬κ° λ§λ html νμ΄μ§κ° λΈ!νμν©λλ€ νμ΄μ§μ μ΄λ―Έμ§ μΆκ°νκΈ°
<img src="보μ΄κ³ μΆμ .jpg">
νμΌμ μ μ½λλ₯Ό μΆκ°νκ³ , Git Bash μμ
python manage.py runserver λ€μ μ
λ ₯ν΄μ€μΌ
λ³κ²½λ λ΄μ©μ΄ λ°μλ¨
(λκ³ μΆμ λλ Git Bash μ°½μμ ctrl+c)νμν©λλ€ νμ΄μ§λ₯Ό
μ μ μΈλ° λλ€ν html μ΄ λ¨λλ‘ μμ±ν μλ μμ!
# views.py λ‘ λμκ°μ ... render() κ΄νΈ μμ μΈλ²μ§Έ μμλ‘ context μΆκ°
from django.shortcuts import render
# Create your views here.
def index(request):
# νμνλ λ©μΈ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
return render(request, 'index.html', context)
-----------------------------------
# index ν¨μ μμ λμ
λ리 μΆκ°
from django.shortcuts import render
# Create your views here.
def index(request):
# νμνλ λ©μΈ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
context = {
'name': 'κ°λμ£Ό',
'img': 'μμμ μΆκ°νλ .img'
}
return render(request, 'index.html', context)
-----------------------------------
# index.html λ‘ λμκ°μ ...
<body> μμ
<h1>{{ name }} λ, νμν©λλ€<h1>
<img src="μμμ μΆκ°νλ .img">
</body>
# μ΄λ κ²λ§ μ μ₯ν΄λ, μμ
νλ μΉ νμ΄μ§ λ€μ λ€μ΄κ°μ μλ‘κ³ μΉ¨ νλ©΄
# μ΄λ¦μ΄ μΆκ°λμ΄ μλ κ²μ λ³Ό μ μμ
-----------------------------------
# λ€μ index.html λ‘ λμκ°μ ...
<body>
<h1>{{ name }} λ, νμν©λλ€<h1>
<img src= "{{ img }}">
</body>
# μ΄λ κ²λ§ μ μ₯ν΄λ, μμ
νλ μΉ νμ΄μ§ λ€μ λ€μ΄κ°μ μλ‘κ³ μΉ¨ νλ©΄
# μ΄λ―Έμ§ μ λ€μ΄κ°μμ
-----------------------------------
# views.py λ‘ λ€μ΄κ°μ ...
# μ΄λ¦μ΄λ μΈμΏλ§μ μ¬λ¬κ°μ§λ‘ λ°κΏλ³΄μ
from django.shortcuts import render
import random
# Create your views here.
def index(request):
# νμνλ λ©μΈ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
names = ['μ£ΌμΈν', 'μ€μ§μ', 'μμκ²½', 'μ‘°λ³μ§', 'μ°¨νμ', 'μ΅κ·Όμ', 'κΉμ κ΅']
random_name = random.choice(names)
context = {
'name': random_name,
'img': 'μμμ μΆκ°νλ .img'
}
return render(request, 'index.html', context)μ¬νκΉμ§λ μ΄λ¦ λΆλΆμ΄ λλ€νκ² μΆλ ₯λλ νμ νμ΄μ§λ₯Ό λ§λ€μλλ°
μ΄μ λΆν°λ μ μ μ interaction νλ μ£Όλ¬Έμ λ§λ€κΈ°!
λ¨Όμ , localhost:8000/index/[μμ΄λ‘λμ΄λ¦] μ΄λ° ꡬμ±μΌλ‘ μ£Όλ¬Έμκ° λ§λ€μ΄μ ΈμΌν¨
# 1λ¨κ³ : μ£Όλ¬Έμ λ§λ€κΈ°
# λ¨Όμ urls.py ν΄λ¦
# djangoμμ λ³μνλ μ΄λ¦μ <> νκΈ°
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index),
path('welcome/<name(λ³μνλμ΄λ¦)>/', views.welcome),
]
------------------------------------------
# views.py ν΄λ¦
from django.shortcuts import render
import random
# Create your views here.
def index(request):
# νμνλ λ©μΈ νμ΄μ§λ₯Ό 보μ¬μ€λ€.
names = ['μ£ΌμΈν', 'μ€μ§μ', 'μμκ²½', 'μ‘°λ³μ§', 'μ°¨νμ', 'μ΅κ·Όμ', 'κΉμ κ΅']
random_name = random.choice(names)
context = {
'name': random_name,
'img': 'μμμ μΆκ°νλ .img'
}
return render(request, 'index.html', context)
# name λ³μκ° urls.py μμ λμ΄μμ, welcome ν¨μμμ μΈ μμ μ΄λΌκ³ λͺ
λ Ήν΄μ£ΌκΈ°
def welcome(request, name):
# μ¬λλ€μ΄ /welcome/λ³ΈμΈμ΄λ¦ μ μ
λ ₯νλ©΄, νμ μΈμ¬μ μ΄λ¦μ λμμ 보μ¬μ€λ€.
print(name)
return render(request, 'welcome.html')
------------------------------------------
# template ν΄λμ λ€μ΄κ°μ ...
# welcome.html νμΌμ μμ±νλ€
<body>
<h1>{{ }}λ, νμν©λλ€!</h1>
</body>
------------------------------------------
# μμμ {{ }} μ±μ λ£μ μκ°μΌλ‘, views.py ν΄λ¦!
# μλ² λ릴 λ Bash μμ μ€λ₯ λ¨λ©΄ ctrl+c νκ³
# python manage.py runserver λ€μ λ리μ
------------------------------------------
# localhost:8000/welcome/john/ μ£Όμμ°½μ μ³λ³΄λ©΄ λ¬Έμ κ° λ λ°μ
# views.py λ‘ λ€μ λμκ°μ ...
def welcome(request, name):
# μ¬λλ€μ΄ /welcome/λ³ΈμΈμ΄λ¦ μ μ
λ ₯νλ©΄, νμ μΈμ¬μ μ΄λ¦μ λμμ 보μ¬μ€λ€.
# print(name)
context = {
'name': name,
}
return render(request, 'welcome.html', context)
------------------------------------------
# template ν΄λ - welcome.html νμΌλ‘ λμκ°μ ...
<body>
<h1>{{ name }}λ, νμν©λλ€!</h1>
</body>
# μμ κ°μ΄ name λ³μ λ£μ΄μ£Όκ³ μλ² λ€μ λλ €λ³΄λ©΄,
# localhost:8000/welcome/[μ΄λ¦] μ΄λ κ² μ£Όμ λ£μμ λ
# λ©μΈ νλ©΄μ [μ΄λ¦]λ, νμν©λλ€! λ¬Έκ΅¬κ° λΈμ΄λ―Έμ§ μ¬λ¬κ°λ₯Ό λμ°κ³ μΆμΌλ©΄?
# views.py ...
def welcome(request, name):
# μ¬λλ€μ΄ /welcome/λ³ΈμΈμ΄λ¦ μ μ
λ ₯νλ©΄, νμ μΈμ¬μ μ΄λ¦μ λμμ 보μ¬μ€λ€.
# print(name)
context = {
'name': name,
'img1': '~.jpg'
'img2': '~.jpg'
'img3': '~.jpg'
}
return render(request, 'welcome.html', context)
# μμ κ°μ΄ μ΄λ―Έμ§ νλνλ λ£μΌλ©΄ λ²κ±°λ‘μ°λκΉ
# μλμ κ°μ΄ μκ³ λ¦¬λλ―Ήνκ² μμ±
-------------------------------------
def welcome(request, name):
# μ¬λλ€μ΄ /welcome/λ³ΈμΈμ΄λ¦ μ μ
λ ₯νλ©΄, νμ μΈμ¬μ μ΄λ¦μ λμμ 보μ¬μ€λ€.
# print(name)
context = {
'name': name,
'images': [
'~.jpg',
'~.jpg',
'~.jpg'
],
'greetings': [
'μλ
νμΈμ', 'Hi', 'Hello'
]
}
return render(request, 'welcome.html', context)
----------------------------------------
# welcome.html ...
# {% %} λΆλΆμ django κ° λ§λ€μ΄μ€ ν
νλ¦Ώ λκ·μ§(DTL, django template language)
<body>
<h1>{{ name }}λ, νμν©λλ€!</h1>
<p>{{ greetings }}</p>
{% for greeting in greetings %}
<p>{{ greeting }}</p>
{% endfor %}
<!-- for greeting in greetings -->
<!-- print(greeting)
</body>