유저 모델 등록
이번 포스팅에서는 유저 등록하는 부분을 가상 폼을 이용해서 만들어 보자.
처음에 해야 할 부분은 Model에 유저정보 모델 (PostUser
) 을 추가하는 것이다.
velog_series_01/dashboard/dashboard_core/models.py
파일을 열고 다음을 추가한다.
# 유저 Model을 정의한다
class PostUser(AbstractUser):
pass
코드를 추가한 models.py
파일은 다음과 같다.
from django.db import models
from django.contrib.auth.models import AbstractUser
# Create your models here.
# DashBoard 게시글 Model을 정의한다
class Post(models.Model):
title = models.CharField(max_length=60)
contents = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
# 유저 Model을 정의한다
class PostUser(AbstractUser):
pass
다음으로 유저를 인증하기 위한 Model을 settings.py
파일 마지막줄에 아래와 같이 추가한다.
AUTH_USER_MODEL = 'dashboard_core.PostUser'
이어서 admin.py
파일을 열고, django
의 admin
내장 모듈에 방금전에 추가했던 유저정보 모델 PostUser
을 추가한다.
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from dashboard_core.models import Post, PostUser
class CustomUserAdmin(UserAdmin):
model = PostUser
list_display = ["username", "email", "is_staff"]
# Register your models here.
admin.site.register(Post)
admin.site.register(PostUser, CustomUserAdmin)
기본적인 작업은 이것으로 끝이다.
하지만, PostUser
Model을 추가했기 때문에 다시 migration
을 해줘야 한다. 다음 커맨드를 실행한다.
python manage.py migrate
지금까지 django
에 Post
Model과 연계하기 위한 User
Model을 만들어보았다.
이제는 인증 모듈과 연계할 차례다.
다음 커맨드로 유저 인증처리 / 유저 등록에 필요한 패키지를 설치한다.
pip install django-rest-auth
pip install django-allauth
pip install django-registration
pip install django-crispy-forms
설치가 다 되었다면, settings.py
파일의 INSTALLED_APPS
배열에 추가한다.
추가한 최종 코드는 아래와 같다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'allauth',
'allauth.account',
'allauth.socialaccount',
'rest_auth',
'rest_auth.registration',
'crispy_forms',
'dashboard_core',
]
그리고 settings.py
파일의 맨 아랫줄에 유저등록 폼 template / 인증관련 설정을 추가해준다.
# django-crispy-forms
CRISPY_TEMPLATE_PACK = "bootstrap4"
# django-allauth
ACCOUNT_EMAIL_VERIFICATION = "none"
ACCOUNT_EMAIL_REQUIRED = (True)
방금 설치한 패키지가 django
Model에 영향을 주기 때문에, 다시 한번 migrate
를 실행하자.
python manage.py migrate
migrate
작업이 완료되었다.
이제 설치된 유저인증 패키지를 Request URL과 연결시키기 위해 urls.py
파일에 추가해준다.
추가한 후에 urls.py
의 전체 소스는 다음과 같다.
from django.contrib import admin
from django.urls import include, path
from rest_framework.routers import DefaultRouter
from dashboard_core.views import PostViewSet
router = DefaultRouter()
router.register(r"posts", PostViewSet, basename="post_status")
urlpatterns = [
path('', include(router.urls)),
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path('api-auth/', include('rest_framework.urls')),
path('rest-auth/', include('rest_auth.urls')),
path('rest-auth/registration/', include('rest_auth.registration.urls')),
]
이것으로 유저 인증 / 등록에 관련된 패키지의 설치 및 우리의 django > dashboard
프로젝트, 앱에 연계관련하여 개발을 진행하였다.
다음 포스팅에서는 실제로 가상 유저등록 Form
을 만들어보도록 하겠다.
Thank you!