django 02

Grace Goh·2022년 9월 28일
0

Django

목록 보기
3/32

django가 동작하는 순서

url사용자가 어떤 주소로 접근할 수 있게 정해주는 공간
url confurls.py라는 파일에서 우리가 코딩을 하게 된다.
view이 url에서 어떤 역할, 기능을 수행할 것인지 만들어주는 공간. views.py에서 실행하게 된다.

어떤 기능을 만들까?

  • 사용자
  • (친구 만들기)

app 만들기

터미널에 입력

# 사용자 관리
(venv) PS C:\Users\gracegoh\Desktop\MySpartaSns> django-admin startapp user
# 글 관리
(venv) PS C:\Users\gracegoh\Desktop\MySpartaSns> django-admin startapp tweet

위 명령어에 의해 아래 2가지 폴더가 생성되었다. ; django의 app


생성한 app을 DB에 반영하기

app
MySpartaSns(이미 생성되어 있는) 이 프로젝트를 관리하는 모든 정보를 갖고 있는 app
MySpartaSns > settings.pydjango의 모든 세팅을 알 수 있다; 어떤 기능, 어떤 설정이 있는지. 여기에 새로 생성한 앱들tweet, user을 연결해야 한다.

# MySpartaSns > settings.py

INSTALLED_APPS = [ # (이미 세팅) django가 기본으로 제공하는 기능들
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tweet', # 추가
    'user', # 추가
]

# MySpartaSns > settings.py 하단에 DB 정보도 있다.

# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

우측 상단 재생버튼(▶) 클릭 후

(terminal) django가 잘 실행되면서 db.sqlite3 파일이 생겼다면 DB 연결에 성공한 것이다. (연결이 잘 되어 추가 설정할 것은 없으나

눈으로 DB를 확인해보기 위해 DB 연결을 한 번 더 하겠다.)

Database > + > Data Source from Path

(△ DB를 눈으로 확인할 수 있게 도와주는 파이참의 도구)


아래와 같이 여러 경로들이 나온다. > DB 경로의 파일들 불러와서 보여주겠다는 의미.

(Path:) MySpartaSnS/db.sqlite3 선택 > open
(Driver:) SQLite > OK


Test Connection : SQLite 연결되었다.

우측 Database : DB 생성할 때마다 테이블이 새로 생성되어 눈으로 확인할 수 있다. '어떤 데이터를 어떻게 저장해야겠다.'

> DB 연결 완료 > console tab은 X

ORM

Object Relational Mapping. 데이터베이스를 하나의 '객체(Object)'; DB에 들어갈 데이터들을 하나의 클래스로 본다. 데이터베이스를 SQL언어(일반적인 DB언어)가 아닌 Python의 클래스로 쉽게 표현하고 사용할 수 있다.

Class

이렇게 생긴 클래스의 형태를 DB로 적용하는 것을 ORM이라고 한다.
안의 내용들은 class와 비슷한 성격이다.

# myBakery가 가진 여러 옵션들, 속성들

class myBakery:
    bread_type = '' # 빵의 종류
    bake_time = '' # 굽는 시간
    price = 0 # 가격

이렇게 클래스를 생성해서 DB에 적용해줄 건데, 생성할 때 어떤 모델을 생성할 건지, 어떤 요소를 담을 건지 고민하며 만들어야 한다.

UserModel 사용자모델 만들기

django는 기본적으로 User 모델(사용자 관리, 로그인, 로그아웃, 회원가입)이 구현되어 있고 이를 제공한다. 이것들의 사용법을 안다면 빠르게 구현을 할 수가 있다.

직접 그 모델을 생성해보자면 생각해볼 것들.

1. 우리가 만들 모델에 어떤 기능/속성이 들어가면 좋을까?

(User Model을 만들 때)
사용자를 구분하는 이름, 비번, 상태메시지, 생성일(가입일)을 클래스에 담는다.

모델이기 때문에 아래와 같이 app user > models.py에 넣는다.

models.py

#user/models.py
from django.db import models


# Create your models here.
class UserModel(models.Model): # 우리가 생성한 Class 이름. 모델 클래스
    class Meta: # DB 정보를 Meta에 적어준다.
        db_table = "my_user" # 내 table 이름을 my_user로 지정

	# 어떤 형태로 DB에 들어갈 것인지.
    username = models.CharField(max_length=20, null=False)
    password = models.CharField(max_length=256, null=False)
    bio = models.CharField(max_length=256, default='') # 상태 정보
    created_at = models.DateTimeField(auto_now_add=True) # 셍성일
    updated_at = models.DateTimeField(auto_now=True) # 수정일.

models.CharField models.DateTimeField
이름, pw, bio 등 각각의 정보들이 어떤 형태로 DB에 들어갈 것인지 설정해준다.

참고 (강의자료) django 모델 필드의 종류

# 문자열 : CharField, TextField
# 날짜/시간: DateTimeField, DateField, TimeField
# 숫자 : IntegerField, FloatField
# 다른 테이블과 연관을 지어 줄 때 : ForeignKey

UserModel을 DB에 반영하기

왼쪽 하단 🟥 누르면 서버 종료 > 터미널 클릭.

1. (공지) 새로운 클래스data 생성

"우리만의 모델을 만들었다."

# Terminal 명령어

python manage.py makemigrations
Migrations for 'user': # 결과: django가 확인.
  user\migrations\0001_initial.py
    - Create model UserModel

2. (적용) 이 내용들을 DB에 적용하기

python manage.py migrate
(많은 내용 출력.. django 기본 DB)
Applying user.0001_initial... OK # 방금 만든 user가 적용됨

profile
Español, Inglés, Coreano y Python

0개의 댓글