๐
applications
๐ท
admin.py
๐ทapps.py
๐ทmodels.py
๐ทtests.py
๐ทviews.py
๐
my_project
๐ท
__init__.py
๐ทsettings.py
๐ทurls.py
๐ทwsgi.py
๐ทasgi.py
## my_project/urls.py
...
>>from articles import views
...
urlpatterns = [
...
>>path('index/', views.index),
]
## articles/views.py
>>def index(request):
>>return render(request, 'index.html')
<!-- articles/templates/index.html-->
<h1>๊ฑฐ๋ถ์ด๋ฐ ํ์ดํ
!</h1>
๐ก
from "" import ""
๋ ๊ธฐ์กด์ ๋ชจ๋์ ๋ถ๋ฌ์ฌ ๋ ์ฃผ๋ก ์ฐ์๋๋ฐarticles
๋ ์ด๋ฆ์ ์ฑํด๋๋__init__.py
์ด ์์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ Python์ด ๋ชจ๋๋ก ์ธ์ํฉ๋๋ค.
๐กarticles๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
,views๋ ๋ชจ๋
,.index๋ ํจ์
์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค
๐กrequest๋ ๋ฐ๋์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ฃผ์ด์ผ ํฉ๋๋ค.
์ ๋ฆฌ
urls.py์ ์ฐ๊ฒฐํ ๋ชจ๋์ importํด๋๋ฉด index์ฃผ์๋ก ์ ์์ views.py์ ์ ์ํ ๋ด์ฉ์ ๋ฐ๋ผ์views.index๋ฅผ ์คํํฉ๋๋ค.
(views๋ articles๋ก๋ถํฐ ๋ถ๋ฌ์จ ๋ชจ๋๋ก ์ธ์)
views.py์์ http request๋ฅผ renderํ๊ณ response๋ฅผ returnํ๊ธฐ ์ํด index.html ํ
ํ๋ฆฟ์ ์ฌ์ฉํฉ๋๋ค. render ์ธ์์ index.html
์ ์ถ๊ฐํด์ค๋๋ค.
ํ ํ๋ฆฟ์ index.html ๋ง๋ค๊ณ ์น์ ๋ณด์ฌ์ค ๋ด์ฉ์ ๋ฌธ๋ฒ์ ์์ฑํฉ๋๋ค.
## my_project/urls.py
urlpatterns = [
...
>>path('dinner/', views.dinner),
]
## articles/views.py
>>def dinner(request):
# ๋ฉ๋ด๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ์ ๋์
๋๋ฆฌ ํํ๋ก ๋ด๋ menus ๋ง๋ค๊ธฐ
>>menus = ['์กฑ๋ฐ', 'ํ๋ฒ๊ฑฐ', '์นํจ', '์ด๋ฐฅ']
# munues๋ฅผ ์ธ์๋ก๋ฐ์ ๋๋คํ๊ฒ ๊ณ ๋ฅด๋ pick ๋ง๋ค๊ธฐ
>>pick = random.choice(menus)
# ๋ฉ๋ด๋ฐ์ดํฐ๋ฅผ views.py -> dinner.html ๋ณด๋ด๊ธฐ ์ํด context ์ฌ์ฉ
>>context = {
'pick': pick, # ํค pick์์ ๋๋คํ๊ฒ ๊ณ ๋ฅธ ๋ฉ๋ด ๋ณ์ ์ ์ฅ
}
return render(request, 'dinner.html', >>context)
<!--articles/templates/dinner.html-->
<h1>์ค๋ ์ ๋
์ {{pick}} ์
๋๋ค.</h1>
- ๋๋คํ๊ฒ ๊ณ ๋ฅธ ๋ฉ๋ด๋ค์ด ๋์ค๋ ๋ชจ์ต
์ฃผ์์์ฒด๋ฅผ ๋ณ์์ฒ๋ผ ์ฌ์ฉํด์ ๋์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋ณ์ํ url์ด๋ผ ํฉ๋๋ค.
์ฃผ๋ก ์ ์ ๊ฐ์ธ ํ์ด์ง์ ์ ์ ๋ช
์ด ์ฃผ์๋ก ๋ค์ด๊ฐ ๊ฒฝ์ฐ๊ฐ ๋ํ์ ์
๋๋ค.
## my_project/urls.py
urlpatterns = [
...
>>path('dinner/<str:name>/', views.dinner),
]
## articles/views.py
def dinner(request, >>name):
...
context = {
'pick': pick,
>>'name': name,
}
...
<!--articles/templates/dinner.html-->
<h1>์ค๋ {{name}}๋์ ์ ๋
์ {{pick}} ์
๋๋ค.</h1>
์ด๋ฐ์์ผ๋ก ์ฅ๊ณ ํ ํ๋ฆฟ์์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ์ฃผ์๊ฐ์ด๋ ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ HTML๋ก ์ถ๋ ฅํ ์ ์๋์ง ํ์ธํด๋ดค์ต๋๋ค.
์ฅ๊ณ ์ ํ
ํ๋ฆฟ์ด ์ด๋ค๊ฑด์ง ํ
ํ๋ฆฟ์์ ์ฌ์ฉํ ์ ์๋ ํ๊ทธ๊ฐ ์ด๋ค๊ฑด์ง ์ฅ๊ณ : ํ
ํ๋ฆฟ ๊ณต์ ๋ฌธ์
์ ์ค๋ช
๋์ด ์์ต๋๋ค. ๋์ค์๋ ์ฐ์ง ์๊ฒ ์ง๋ง ์ฒ์์ ์ฅ๊ณ ๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ํ
ํ๋ฆฟ์ ์ด๋์ ๋ ์ตํ์ผ ํฉ๋๋ค. ์ฅ๊ณ : ๋ด์ฅ ํ
ํ๋ฆฟ ํ๊ทธ์ ํํฐ
๋ค์ค ๊ฐ์ฅ ๋ง์ด ์ฐ์ผ๋งํ for
์ if
๋ฅผ ์ฐ์ตํด๋ณด๊ฒ ์ต๋๋ค.
for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ์ ๋ ํค๊ฐ๊ณผ ๋ฉ๋ด๋ฆฌ์คํธ์์ ๋ฉ๋ด์ ํค๊ฐ์ ์ฐ๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค.
## articles/views.py
def dinner(request, name):
...
context = {
'pick': pick,
'name': name,
>>'menus': menus
}
return render(request, 'dinner.html', context)
<h1>์ค๋ {{name}}๋์ ์ ๋
์ {{pick}} ์
๋๋ค.</h1>
<h1>๋ฉ๋ด ๋ฆฌ์คํธ</h1>
<ul> <!-- โ ํ์ -->
{% for menu in menus %}
<li>{{ menu }}</li>
{% endfor %}
</ul>
def dinner(request, name):
>>menus = [{"name":'์กฑ๋ฐ',"price":30000}, {"name":'ํ๋ฒ๊ฑฐ',"price":5000}, {"name":'์นํจ',"price":20000}, {"name":'์ด๋ฐฅ',"price":15000}]
...
- ์ ๋
ํค๊ฐ ์ฐ๊ฒฐ๋์ง ์์
- ๋ฉ๋ด ๋ฆฌ์คํธ์ name ํค๊ฐ ์ฐ๊ฒฐ๋์ง ์์
<h1>์ค๋ {{name}}๋์ ์ ๋
์ {{pick.name}} ์
๋๋ค.</h1>
<h1>๋ฉ๋ด ๋ฆฌ์คํธ</h1>
<ul>
{% for menu in menus %}
<li>{{ menu.name }} {{ menu.price }}์</li>
{% endfor %}
</ul>
- ์ ๋
ํค๊ฐ ์ฐ๊ฒฐ
- ๋ฉ๋ด ๋ฆฌ์คํธ์ name ํค๊ฐ, price ํค๊ฐ ์ฐ๊ฒฐ
if ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด ํน์ ๊ฐ๊ฒฉ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ ๋ฏผํ๋ ๋ฐ์์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
<h1>...</h1>
<ul>...</ul>
{% if pick.price > 20000 %}
<p>๋น์ธ๋ค</p>
{% elif pick.price > 10000 %}
<p>๊ทธ๋ญ์ ๋ญ</p>
{% else %}
<p>๋๋ฌด์ข์!</p>
{% endif %}
- ์กฐ๊ฑด์ ์ค์ ํ 20000์์ด๊ณผ, 10000์์ด๊ณผ ๋ฉ๋ด๊ฐ ์๋ ํ๋ฒ๊ฑฐ๊ฐ pick๋์๋ค
- else์กฐ๊ฑด <p>๋๋ฌด์ข์!</p> ์ถ๋ ฅ