교육/프로그래머스 인공지능 데브코스

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})