ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5주차 - Day2 Django로 동적 웹 페이지 만들기
    교육/프로그래머스 인공지능 데브코스 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})
    

    댓글

Designed by Tistory.