728x90
반응형
SMALL
REST API
장고에서 클라이언트 (사용자) 인증이나 컨텍스트 (세션, 로그인 정보)등을 직접 관리하는 REST API 툴킷이 존재한다.
docker run -it -p 9998:8000 -p 9997:3000 -v ${PWD}:/code --name project-01 --net project project:test
장고 패키지를 설치한다.
/code # pip install django
/code # pip install djangorestframework
/code # pip install psycopg2-binary
/code # pip install Pillow
/code # pip freeze
다음을 수행하면 간단한 형태의 프로젝트가 생성된다.
/code # django-admin startproject service
그 다음, service 프로젝트로 이동하여 회원의 기능을 담당하는 users 프로젝트를 생선한다. 또한, service 프로젝트 폴더 안에 폴더를 생성하여 파일을 만들어도 무방하다.
/code # cd service/
/code # django-admin startapp users
settings.py
services 폴더의 settings.py에 다음을 추가한다.
INSTALLED_APPS = [
'rest_framework',
'users',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'service',
'USER': 'admin',
'PASSWORD': '123456',
'HOST': 'project-db', # 127.5.81.9
'PORT': 5432
}
}
/code/service # pip install tzdata
/code/service # pip freeze
AUTH_USER_MODEL = 'users.USER'
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication'
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 5
}
models.py
users 프로젝트의 models.py에서 다음을 추가한다.
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.base_user import BaseUserManager
class UserManager(BaseUserManager):
def create_user(self, email, password, **extra_fields):
email = self.normalize_email(email)
extra_fields.setdefault('is_active', True)
user = self.model(email = email, **extra_fields)
user.set_password(password)
user.save()
return user
def create_superuser(self, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_active', True)
return self.create_user(email, password, **extra_fields)
class User(AbstractUser):
TIMEOUT = 60 * 5 # 입력 제한 시간
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
email = models.EmailField(max_length = 256, unique = True)
username = models.CharField(max_length = 128, unique = True)
password = models.CharField(max_length = 128, null = True, blank = True)
profile = models.ImageField(null = False, blank = True)
description = models.CharField(max_length = 512, blank = True)
authcode = models.CharField(max_length = 17)
created = models.DateTimeField(auto_now_add = True)
updated = models.DateTimeField(auto_now = True)
objects = UserManager()
class Meta:
ordering = ['created'] # 어떤 순서로 가져 올지 정함
urls.py
users 프로젝트 폴더에 urls.py를 만든다.
728x90
반응형
LIST
'App Programming > Django' 카테고리의 다른 글
[Django] 프론트엔드 페이지 (0) | 2023.02.22 |
---|---|
[Django] 시리얼라이저 (Serializer) (0) | 2023.02.22 |
[Django] 프로젝트 생성 (0) | 2023.02.20 |
[Django] 기본 요소 (2) (0) | 2023.02.20 |
[Django] 기본 요소 (1) (0) | 2023.02.20 |