본문 바로가기
DEV/Web 개발

Web 개발 :: 파이썬 django User, CRUD, Allauth _TIL#21

by 올커 2022. 9. 28.

■ JITHub 개발일지 21일차

□  TIL(Today I Learned) ::

Django User Model, CRUD, Allauth

1. User Model 확장하기

 ※ 문제

  1. 프로젝트에 사용될 폴더를 생성하고, 편집기에서 생성한 폴더를 열어주세요.
  2. 파이썬 가상 환경을 생성하고 활성화해주세요.
  3. Django 패키지를 설치해주세요.
  4. spartatest라는 django 프로젝트를 생성해주세요
  5. customuser라는 앱을 생성해주세요
  6. settings.py에 앱을 등록해주세요.
  7. Django의 User를 기반으로 만든 CustomModel라는 클래스를 만들어주세요.
  • 조건: 테이블 이름은 custom_user
  • Django의 User 모델에서 아래의 필드를 추가해주세요.
    • address (TextField, max_length=500, blank=True)
    • bio (TextField, max_length=500, blank=True)
    힌트: class CustomModel(AbstractUser)
  1. Django에게 기본 인증과정 (AUTH_USER_MODEL)을 customuser 앱에 작성한 CustomModel로 사용하겠다! 라고 알려주세요.
  2. 힌트: settings.py
  3. 데이터베이스에 변경사항을 반영하고 적용해주세요.
  4. 관리자 계정을 만들어주세요.
  5. Admin 사이트에서 CustomModel를 볼 수 있도록 적용해주세요.
  6. 서버를 켜고 CustomModels에서 아래와 같이 address와 bio를 볼 수 있다면 성공입니다.


 ※ 풀이

  1) 파이썬 가상 환경 생성 및 활성화

# 가상환경 생성
python -m venv venv

# 가상환경 활성화
source venv/bin/activate

 

  2) Django 패키지 설치

pip install django

 

  3) django 프로젝트 생성 : 이름 spartatest

django-admin startproject spartatest .

 

  4) 앱 생성 : 이름 customuser

python manage.py startapp customuser

 

  5) settings.py에 앱 등록

# settings.py

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'customuser',
]

 

  6) Django의 User를 기반으로 만든 클래스 CustomModel 생성(힌트: class CustomModel(AbstractUser))

 

  ▶ 조건

  • 테이블 이름은 custom_user
  • address (TextField, max_length=500, blank=True)
  • bio (TextField, max_length=500, blank=True)

 

# models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings

# Create your models here.
class CustomModel(AbstractUser):
    class Meta:
        db_table = "custom_user"
        
    address = models.TextField(max_length=500, blank=True)
    bio= models.TextField(max_length=500, blank=True)

 

  7) Django에게 기본 인증과정 (AUTH_USER_MODEL)을 customuser 앱에 작성한 CustomModel로 사용하겠다! 라고 알려주기(힌트: settings.py)

# settings.py

# ~
AUTH_USER_MODEL = 'customuser.CustomModel'
  1. 데이터베이스에 변경사항 반영 및 적용
# 데이터베이스 마이그레이션 생성
python manage.py makemigrations

# 데이터베이스 적용
python manage.py migrate
  1. 관리자 계정 생성
python manage.py createsuperuser

# 이름, 메일, 패스워드 입력
  1. Admin 사이트에서 CustomModel를 볼 수 있도록 적용
# admin.py

from django.contrib import admin
from .models import CustomModel

# Register your models here.
admin.site.register(CustomModel)
  1. 서버를 켜고 CustomModels에서 아래와 같이 address와 bio를 볼 수 있는지 확인하기
python manage.py runserver

 

  ▷ 결과

 

 

 

윈도우, 맥 엔터방식 다른 점을 보완
git config --global core.autocrlf input (맥)
git config --global core.autocrlf true

깃 커밋시 이름, 이메일주소 (깃허브 계정과 다름)
git config --global user.name <이름>
git config --global user.email <이메일>

깃 main을 디폴트로 만들기
git config --global init.defaultBranch main
git config --get init.defaultBranch main

 

 


□  TIF(Today I Felt) ::

  - Django를 활용해서 CRUD를 구현해보았다.

  - Django allauth 패키지를 사용하여 인스타 클론의 유저관리페이지를 제작하고 있다.

  - 팀장님과 팀원들의 도움으로 생각보다 수월하게 진행될 것 같다.

  - 깃을 활용한 첫 프로젝트이다. 깃허브를 더 자연스럽게 사용할 수 있으면 좋겠다.

 

반응형

댓글