본문 바로가기
Django

장고 2

by 이성호 2022. 1. 20.

Django

 

장고의 MVT 패턴

사용자가 요청 > url conf: 사용자가 어떤 주소로 접근할 수 있게 정해주는 공간 > View: url에서 어떤 기능을 할건지 만들어주는 공간 > Model > db > Model > View > Template > user

 

M(model) 

 - 데이터베이스의 모델(orm)

 - 저장되고 사용되는 데이터의 형태

T(template)

 - 사용자에게 보여지는 부분

 - 화면

V(view)

 - 실질적으로 프로그램이 동작하는 부분

 - url을 요청하고 응답하는 그 사이에 일어나는 서비스들이 존재하는 곳

 

ORM(Object Relational Mapping): 데이터베이스를 하나의 ‘객체(Object)’로 보고, 데이터베이스를 sql 언어가 아닌 클래스로 표현 및 사용 할 수 있게 해줌

 

장고 모델 만들기(유저 앱, 트윗 앱 만들기)

 

$ django-admin startapp user

$ django-admin startapp tweet

해당 명령어들을 통해 유저 앱과 트윗 앱 생성

 

프로젝트 앱 폴더의 세팅 파일 수정

INSTALLED_APPS 부분에 생성한 앱 이름 추가: ‘tweet’, ‘user’, (끝에 쉼표!)

 

Db 연결(sql lite)

앱 추가 후 장고를 실행하면 db.sqllite3 파일이 생성됨

파이참 우측 데이터베이스 탭을 실행시켜서 data source from path 메뉴 선택하여 해당 파일 추가(sqlite 드라이버 추가!) 후 연결 테스트, 적용을 완료하고 적용

 

유저 모델 추가

유저 앱 폴더의 모델 파일에 하단 코드 추가

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


# Create your models here.
class UserModel(models.Model):
    class Meta:
        db_table = "my_user" # 해당 모델의 정보. 해당 코드에서는 테이블 이름만 정해줌

    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)
    # 각 요소들에 어떤 데이터의 형식이 들어갈 지 정한 뒤 필드에 제한 설정
# 각종 필드 종류
# 문자열 : CharField, TextField
# 날짜/시간: DateTimeField, DateField, TimeField
# 숫자 : IntegerField, FloatField
# 다른 테이블과 연관을 지어 줄 때 : ForeignKey

작성 완료 후 장고 실행, 하단 코드 실행

python manage.py makemigrations (데이터베이스 변경을 알려주는 명령어)

 

python manage.py migrate (변경된 데이터베이스를 반영하는 명령어)

 

데이터베이스 확인

 

python manage.py createsuperuser (admin 계정 생성)

 

admin 페이지 접속 후 로그인

 

관리자 페이지에 데이터베이스 모델 등록

유저 앱의 어드민 파일에 하단 코드 작성하면 등록 완료. 같은 방법으로 트윗 앱도 추가

from django.contrib import admin
from .models import UserModel

# Register your models here.
admin.site.register(UserModel) # UserModel을 Admin에 추가

'Django' 카테고리의 다른 글

장고 4  (0) 2022.01.21
장고 3  (0) 2022.01.20
장고 1  (0) 2022.01.20