[Series1. DashBoard 만들기] - 8. View 만들기 (3)

django_apps·2021년 9월 21일
0

django apps

목록 보기
8/17
post-thumbnail

유저 모델 등록

이번 포스팅에서는 유저 등록하는 부분을 가상 폼을 이용해서 만들어 보자.

처음에 해야 할 부분은 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 파일을 열고, djangoadmin 내장 모듈에 방금전에 추가했던 유저정보 모델 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

지금까지 djangoPost 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!

profile
django developer

0개의 댓글