url | 사용자가 어떤 주소로 접근할 수 있게 정해주는 공간 |
url conf | urls.py 라는 파일에서 우리가 코딩을 하게 된다. |
view | 이 url에서 어떤 역할, 기능을 수행할 것인지 만들어주는 공간. views.py 에서 실행하게 된다. |
터미널에 입력
# 사용자 관리
(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 | |
---|---|
MySpartaSns | (이미 생성되어 있는) 이 프로젝트를 관리하는 모든 정보를 갖고 있는 app |
MySpartaSns > settings.py | django의 모든 세팅을 알 수 있다; 어떤 기능, 어떤 설정이 있는지. 여기에 새로 생성한 앱들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
Object Relational Mapping. 데이터베이스를 하나의 '객체(Object)'; DB에 들어갈 데이터들을 하나의 클래스로 본다. 데이터베이스를 SQL언어(일반적인 DB언어)가 아닌 Python의 클래스로 쉽게 표현하고 사용할 수 있다.
이렇게 생긴 클래스의 형태를 DB로 적용하는 것을 ORM이라고 한다.
안의 내용들은 class와 비슷한 성격이다.
# myBakery가 가진 여러 옵션들, 속성들
class myBakery:
bread_type = '' # 빵의 종류
bake_time = '' # 굽는 시간
price = 0 # 가격
이렇게 클래스를 생성해서 DB에 적용해줄 건데, 생성할 때 어떤 모델을 생성할 건지, 어떤 요소를 담을 건지 고민하며 만들어야 한다.
django는 기본적으로 User 모델(사용자 관리, 로그인, 로그아웃, 회원가입)이 구현되어 있고 이를 제공한다. 이것들의 사용법을 안다면 빠르게 구현을 할 수가 있다.
직접 그 모델을 생성해보자면 생각해볼 것들.
(User Model을 만들 때)
사용자를 구분하는 이름, 비번, 상태메시지, 생성일(가입일)을 클래스에 담는다.
모델이기 때문에 아래와 같이 app user
> 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
왼쪽 하단 🟥 누르면 서버 종료 > 터미널 클릭.
"우리만의 모델을 만들었다."
# Terminal 명령어
python manage.py makemigrations
Migrations for 'user': # 결과: django가 확인.
user\migrations\0001_initial.py
- Create model UserModel
python manage.py migrate
(많은 내용 출력.. django 기본 DB)
Applying user.0001_initial... OK # 방금 만든 user가 적용됨