django์์ ์ด๋ค ์ ๋ณด์ ์์ฒญ์ ๋ํด DB๋ฅผ ๊ด๋ฆฌํ๋ ๊ณณ์ด Model์ด๋ค. Template๊ณผ View์ ์์ฒญ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
django๋ SQL์ ์ฌ์ฉํ ์ ์์ง๋ง ๋ด์ฅ๋์ด ์๋ORM object์ ์ฌ์ฉํด์ DB๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
class Coffee(models.Model):
name = models.CharField(default = "", null = False)
price = models.IntergerField()
is_ice = models.BooleanField()
ํ๋๋ช
= ํ๋ํํ
"""
๋ฌธ์์ด : CharField
์ซ์ : IntergerField, SmallIntegerField
๋
ผ๋ฆฌํ : BooleanField
์๊ฐ/๋ ์ง : DateTimeField
๋ฑ๋ฑ
"""
from django.contrib import admin
from .models import Coffee
# Register your models here.
admin.site.register(Coffee)
์ด๋ ๊ฒ ํ์ผ์ ์์ฑํ ํ ์ ์ฅํ ๋ค ์๋ฒ๋ฅผ ๊ตฌ๋ํ๋ฉด
์ด๋ฐ ์์ผ๋ก ๋์จ๋ค.
ํ์ด์ฌ ์ฅ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํ ๋ admin์ด ์๋์ผ๋ก ์์ฑ๋จ
์์ ๋ช
๋ น์ด๋ฅผ ์คํํด์ผ ์ ์์ฑ๋ adminํ์ด์ง์์ Coffee๋ฅผ ์์ ํ๋ฉด ๋ฐ์๋๋ค.
python manage.py makemigrations homepage
python manage.py migrate
#์ด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์ ์์ ์ผ๋ก ๊ตฌ๋๋จ
from .models import Coffee
def coffee_view(request):
coffee_all = Coffee.objects.all()#๋ชจ๋ ํ์ ์ ๋ถ ๊ฐ์ ธ์ค๋ผ๋ ๋ป
return render(request, 'coffee.html', {"coffee_list":coffee_all})
template์ coffee.htmlํ์ผ ์์ฑํ๋ค.
<!DOCTYPE html>
<html>
<head>
<title>Coffee List</title>
</head>
<body>
<h1>My Coffee List</h1>
{% for coffee in coffee_list %}
<p>{{ coffee.name}}, {{ coffee.price }} </p>
{% endfor %}
</body>
</html>
urls.py
from homepage.views import introduce, coffee_view
urlpatterns = [
path('',index),#127.0.0.1/ ์ด ๊ฒฝ๋ก๊ฐ ๋ค์ด์ค๋ฉด index์คํํ๋ผ๋ ๋ป
path('introduce/', introduce), # 127.0.0.1/introduce/
path('coffee/',coffee_view),
path('admin/', admin.site.urls),#127.0.0.1/admin/
]
์ด๋ ๊ฒ ๊ฐ ํ์ผ์ ์์ ํ ๋ค ์๋ฒ๋ฅผ ์คํ์ํค๋ฉด coffee๋ฆฌ์คํธ๊ฐ ์๋ฒ์ ์ถ๋ ฅ๋๋ค.
from django import forms
from .models import Coffee#Model ํธ์ถ
class CoffeeForm(forms.ModelForm): #ModelForm์ ์์๋ฐ๋ CoffeeForm ์์ฑ
class Meta:
model = Coffee
fields = ('name', 'price', 'is_ice')
์ดํ views.py์ coffee.htmlํ์ผ์ ๋ชจ๋ ์์ ํด์ค๋ค.
# ์ถ๊ฐ
from .forms import CoffeeForm
# ์์
def coffee_view(request):
coffee_all = Coffee.objects.all()
form = CoffeeForm() # Form์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ค๋ค.
return render(request, 'coffee.html',{"coffee_list":coffee_all})
<!DOCTYPE html>
<html>
<head>
<title>Coffee List</title>
</head>
<body>
<h1>My Coffee List</h1>
{% for coffee in coffee_list %}
<p>{{ coffee.name}}, {{ coffee.price }} </p>
{% endfor %}
<form method="POST">{% csrf_token%}#๋ณด์์ฒ๋ฆฌ
{{ coffee_form.as_p }}
<button type="'submit">Save</button>#Save๋ฒํผ
</form>
</body>
</html>
ํ์ง๋ง ์ดํ ํํ์ด์ง์์ save๋ฅผ ํด๋ ์ถ๋ ฅ์ ๋์ง ์๋๋ค.
์ฝ๋ ํ๊ฒฝ์์ save๋ฅผ ํ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ช
๋ น์ ์ ์ด์ผ๋๋ค.
views.py
def coffee_view(request):
coffee_all = Coffee.objects.all()#๋ชจ๋ ํ์ ์ ๋ถ ๊ฐ์ ธ์ค๋ผ๋ ๋ป
# ๋ง์ฝ request๊ฐ POST๋ผ๋ฉด:
#POST๋ฅผ ๋ฐํ์ผ๋ก Form์ ์์ฑํ๊ณ
#Form์ด ์ ํจํ๋ฉด -> ์ ์ฅ
if request.method == "POST":
form = CoffeeForm(request.POST)#์์ฑ๋ Form
if form.is_valid():#์ด ์ฑ์์ง Form์ด ์ ํจํ๋ค๋ฉด:
form.save()# ์ด Form๋ด์ฉ์ Model์ ์ ์ฅ
form = CoffeeForm()
return render(request, 'coffee.html', {"coffee_list":coffee_all, "coffee_form":form})
์ด๋ ๊ฒ coffee๋ชฉ๋ก์ ์ถ๋ ฅํ๊ณ POST๊ธฐ๋ฅ๊น์ง ์ถ๊ฐํ ์๋ฒ๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
๋~!