<Django> Django C.R.U.D(1)

jm_yoon·2020년 12월 29일
1
post-thumbnail

Django 개념
프레임워크란?

Django web framework를 활용한 application 개발에 핵심이되는 URLconf, View, Model 중에 Model을 작성하고 ORM을 통해서 Database에 table을 만들고 데이터를 생성, 조회, 수정, 삭제하는 방법을 정리해보았다.

전체적인 장고의 흐름

Django project & application 생성

Django는 가상환경에서 작업하는 것이 좋다.
가상환경명을 프로젝트명으로 만든 후 새로운 django project 생성하기
(장고프로젝트는 어떠한 디렉토리에 넣어도 무관함)

django-admin startproject westarbucks

<프로젝트이름>으로 들어와서 새로운 앱을 생성한다.(예시로 products라는 앱 생성)

cd westarbucks
python manage.py startapp products

Database 생성

다른 터미널 창에서 Database를 생성해준다.

$ mysql.server start

$ mysql -u root -p

mysql> create database "NAME" character set utf8mb4 collate utf8mb4_general_ci;

"NAME"안에 데이터베이스 이름

Django westarbucks에서 settings.py 설정

IP허용하기 ALLOWED_HOSTS = ['*']
INSTALLED_APPS/MIDDLEWARE에서 주석 처리하기 admin, csrf, auth
생성한 앱이 있다면 INSTALLED_APPS에 추가하기 'products'

MySQL database와 연동

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'root',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

products/models.py 작성

생성한 앱의 models.py에 가서 class코드 입력

# 예시
from django.db import models

class Menu(models.Model):
    name = models.CharField(max_length=20)

    class Meta:
        db_table = "menu"


class Category(models.Model):
    name = models.CharField(max_length=20)
    menu = models.ForeignKey('Menu', on_delete=models.CASCADE)

    class Meta:
        db_table = "category"

class Drink(models.Model): 
    name = models.CharField(max_length=50)
    category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
    allergy_drink = models.ManyToManyField("Allergy", through = "AllergyDrink")

    class Meta:
        db_table = "drinks"

class Image(models.Model):
    image_url = models.URLField(max_length = 2000)
    drink = models.ForeignKey('Drink', on_delete=models.CASCADE))

    class Meta:
        db_table = "image"

뭔지 정리하기
on_delete=models.CASCADE
on_delete=models.SET_NULL, null=True

migrate

models.py입력이 끝나면 manage.py가 있는 디렉토리로 와서
$ python managy.py makemigrations
$ python managy.py migrate 입력하기
(models.py가 수정될때마다 입력해야한다.)

mysql server start

아까 mysql 데이터베이스 생성했던 터미널창으로 와서
$ mysql.server start입력하기
$ mysql -u root -p
mysql> show databases;
mysql> use westarbucks; use 데이터베이스 이름 입력
mysql> show tables; 생성된 table목록 보기
mysql> select * from menu;
mysql> select * from category;
mysql> select * from <생성된 table이름>;

python manage.py shell

manage.py가 있는 디렉토리로 가서 python manage.py shell 입력 후
데이터 입력하기
(models.py에 작성했던 class 꼭 import해주기!)

from products.models import Menu, Category, Drink

menu = Menu.objects.create.(name="")
queryset API

데이터 입력후 mysql에서 select * from 통해 확인하기

profile
Hello!

0개의 댓글