Django와 MySQL 연동하기 - 2
이전 글에서는 Django 프로젝트 자체와 MySQL을 연동해서 디폴트 테이블들을 생성하는 것까지 수행했다.
이번에는 사용자 정보를 저장하기 위한 User 앱을 생성하고 관련 테이블을 생성하는 법을 알아볼 것이다.
App 생성
- Django 프로젝트 내에 회원가입, 로그인, 마이페이지 등에 활용할 User 앱을 생성한다.
1
python manage.py startapp User
- 프로젝트 폴더 내
User
이라는 이름의 디렉토리가 생성되었을 것이다. 이제settings.py
에 생성한 앱을 등록한다.
1번과 2번의 순서가 바뀌면 migrate 할 때 앱을 찾을 수 없다는 오류가 뜨게 되므로 주의하도록 한다.1 2 3 4 5
# settings.py INSTALLED_APPS = [ ..., 'User', ]
- 프로젝트 폴더의
urls.py
에 앱을 등록하고, 앱 디렉토리 내에도urls.py
를 생성해서 진행할 작업에 대한 url을 작성한다.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# {project}/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('user/', include('user.urls')), ] # {app_dir}/urls.py from django.urls import path, include from . import views from rest_framework import urls urlpatterns = [ path('signup/', views.UserCreate.as_view(), name='signup'), path('login/', views.UserLogin.as_view(), name='login'), path('mypage/', view.UserPage.as_view(), name='mypage'), ]
테이블 생성, migrate 수행
-
User/models.py
에 생성할 테이블의 구조를 설계한다. 난 단순한 CRUD 복습을 위한 거라 이름, 아이디 대용 이메일, 비밀번호에 해당하는 필드만 만들었다.1 2 3 4 5 6 7 8 9 10 11 12
from django.db import models class User(models.Model): ID = models.AutoField(primary_key=True) name = models.CharField(max_length=50) email = models.EmailField(unique=True) password = models.CharField(max_length=100) class Meta: managed = True db_table = 'user'
-
AutoField
데이터 삽입 시 1부터 시작해서 자동으로 오름차순으로 값이 지정되는 정수 필드이다. -
CharField
글자를 삽입하는 필드이고 최대 길이를 지정해야 한다. 길이 제한이 없는 텍스트 필드는TextField
를 사용한다. -
EmailField
이름처럼 email 주소를 저장하는 필드이다.
Meta
클래스
Django의models.Model
라는 추상 클래스를 상속받아 모델을 구현할 경우Meta
클래스를 내부에 선언함으로써 메타 데이터 정보를 부여할 수 있다. 정렬 방법, 테이블의 이름 등을 지정할 수 있다. 개별 옵션은 여기에서 확인하기! -
- 이제 migrate를 한다.
1 2
python manage.py makemigrations User python manage.py migrate User
이 때 이전 포스트와 같이 프로젝트와 MySQL을 미리 연동하지 않았다면
User
를 빼고 전체적으로 연동이 되도록 한다.
This post is licensed under CC BY 4.0 by the author.