교육/프로그래머스 인공지능 데브코스
5주차 - Day2 Django로 동적 웹 페이지 만들기
zzangyeah
2021. 5. 18. 23:33
728x90
1. django4 - model
데이터베이스 : 데이터를 저장하는 시스템(구조화!)
-Relational DB : 테이블 형태로 저장 cf)pandas.df -> SQL을 사용해서 DB조작 Django에선 "ORM"이라는 것을 사용!
#models.py
from django.db import models
#클래스 형태로 만듦
class <모델이름>(models.Model):
Field1 : Field1 종류
Field2 : Field2 종류
...
'''
문자열 : CharField(),...
숫자 : IntegerField(), SmallIntegerField(), ...
논리형 : BooleanField(),...
시간/날짜 : DateTimeField(),...
'''
#admin.py
from django.contrib import admin
from .models import <모델이름>
#admin.py에서 모델을 자유롭게 다룰 수 있음
# Register your models here.
admin.site.register(<클래스이름>)
바로 http://127.0.0.1:8000/admin/ 에 클래스(Relational DB)가 올라가지 않음
migration을 해줘야 올라감
python manage.py makemigrations homepage
python manage.py migrate
from django.db import models
# Create your models here.
class Coffee(models.Model):
def __str__(self):
return self.name
name=models.CharField(default='',null=False, max_length=30)
price=models.IntegerField(default=0)
is_ice=models.BooleanField(default=False)
2. django5 - Template에서 Model 확인하기
1.모델을 만듦
2.view에서 모델을 import하고 모델에 해당하는 값을 가지고 옴 dictionary타입으로 html 템플릿에 넘겨줌
3.html 템플릿에서 템플릿 변수와 템플릿 태그를 이용해서 데이터들을 처리
#homepage.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>
3. django6 - Form으로 Template에서 Model 수정하기
#homepage.form.py
from django import forms
from .models import Coffee #Model 호출
class CoffeeForm(forms.ModelForm): #ModelForm을 상속받는 CoffeeForm생성
class Meta:
model = Coffee
fields=('name','price','is_ice')
#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%}
<form method="POST"> {% csrf_token %}
{{coffee_form.as_p}}
<button type="submit">Save</button>
</form>
</body>
</html>
#homepage.form.py
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
def coffee_view(request):
coffee_all=Coffee.objects.all()
#만약 request가 POST라면:
if request.method=="POST":
#POST를 바탕으로 FORM을 완성하고
form=CoffeeForm(request.POST) #완성된 Form
#채워진 FORM이 유효하면
if form.is_valid():
#Form내용을 Model에 저장
form.save()
form=CoffeeForm()
return render(request, 'coffee.html',{"coffee_list":coffee_all, "coffee_form":form})