Programming

[Django] 스터디

finite 2022. 12. 28. 23:25
반응형

Pycharm 에서는..

conda install django

Else..

pip install django

 

장고 프로젝트 시작

django-admin startproject config .

 

manage.py 파일이 있는 곳에서 실행해보면.. demo화면 나옴

python manage.py runserver

 

프로젝트에 app 추가하려면

python manage.py startapp YOUR_APP_NAME

 

이제 django 구현을 위해서는 MVT pattern을 알아야 한다.

Model : models.py

Views : view.py

Template : template 폴더 내에 html v파일들

 

 

django DB 사용하려면

models.py 에 db 필드 선언 클래스를 만들고,

from django.db import models
from time import timezone

# Create your models here.

# FrigeItem Attribute :
# Item : 냉장고에 들어간 물품(Mandantory)
# date_input : 웹페이지에 쓴 날짜(Auto)
# date_add_frige : 냉장고에 들어간 실제 날짜(Mandantory)
# freezing : 냉장고/냉동고.. null or !yes : 냉장고, yes : 냉동고
# date_expire : 유통기한(Optional)
# quantity : 수량(Optional)
# source : 어디서 얻게 된 것인지(Optional)
# etc : 기타(Optional)
class FrigeItem(models.Model):
    item = models.CharField(max_length=50)
    date_input = models.CharField(max_length=50, null=True)
    date_add_frige = models.CharField(max_length=50, null=True)
    freezing = models.CharField(max_length=50, null=True)
    date_expire = models.CharField(max_length=50, null=True)
    quantity = models.CharField(max_length=50, null=True)
    source = models.CharField(max_length=200, null=True)
    etc = models.CharField(max_length=200, null=True)

만든 클래스 내용을 db로 전환해줘야해서

python manage.py makemigrations
python manage.py migrate

 

views.py에 DB 내용 rendering..

# Create your views here.
def index(request):
    #myFrigeItem = FrigeItem.objects.all().order_by('-quantity').values()
    myFrigeItem = FrigeItem.objects.all().values()

    template = loader.get_template('frige/frige.html')
    context = {
        'myFrigeItem': myFrigeItem,
        #'myFrigeItem_Idx': 1,
    }
    return HttpResponse(template.render(context, request))

 

templates 에는 views.py에 있는 context를 뿌려주면

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="refresh" content="10">
    <title>냉장고</title>
</head>
<body>
<h1>냉장고</h1>
    <p>
        <a href="add/">냉장고 물품 기입하기</a>
    </p>
    <table border="1">
        <tr>
            <td>구     분</td>
            <td>물     품</td>
            <td>들어온 날짜</td>
            <td>유통  기한</td>
            <td>수     량</td>
            <td>출     처</td>
            <td>기     타</td>
            <td>수     정</td>
            <td>삭     제</td>
        </tr>
        {% for x in myFrigeItem %}
        {% if x.freezing != '냉동' %}
        <tr>
            <td>{{ x.id }}</td>
            <td>{{ x.item }}</td>
            <td>{{ x.date_add_frige }}</td>
            <td>{{ x.date_expire }}</td>
            <td>{{ x.quantity }}</td>
            <td>{{ x.source }}</td>
            <td>{{ x.etc }}</td>
            <td><a href="{% url 'update' x.id %}">Update</a></td>
            <td><a href="{% url 'delete' x.id %}">Delete</a></td>
        </tr>
        {% endif %}
        {% endfor %}
    </table>
<h1>냉동고</h1>
    <table border="1">
        <tr>
            <td>구     분</td>
            <td>물     품</td>
            <td>들어온 날짜</td>
            <td>유통  기한</td>
            <td>수     량</td>
            <td>출     처</td>
            <td>기     타</td>
            <td>수     정</td>
            <td>삭     제</td>
        </tr>
        {% for x in myFrigeItem %}
        {% if x.freezing == '냉동' %}
        <tr>
            <td>{{ x.id }}</td>
            <td>{{ x.item }}</td>
            <td>{{ x.date_add_frige }}</td>
            <td>{{ x.date_expire }}</td>
            <td>{{ x.quantity }}</td>
            <td>{{ x.source }}</td>
            <td>{{ x.etc }}</td>
            <td><a href="{% url 'update' x.id %}">Update</a></td>
            <td><a href="{% url 'delete' x.id %}">Delete</a></td>
        </tr>
        {% endif %}
        {% endfor %}
    </table>
</body>
</html>

 

일단 여기까지

반응형