Home ์žฅ๊ณ  User Model ํ™•์žฅ (feat.AbstractUser)
Post
Cancel

์žฅ๊ณ  User Model ํ™•์žฅ (feat.AbstractUser)

๐Ÿ“ข ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—โ€ฆ

๐Ÿ™„ ํ™•์žฅ์ด ์™œ ํ•„์š”ํ•ด?

Django์—๋Š” ๊ถŒํ•œ ๋ฐ ์ธ์ฆ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ๋‹ด๊ธธ User Model ์—ญ์‹œ ์ด๋ฏธ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋“ค์ด ๋Œ€๋ถ€๋ถ„ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ธฐ๋Šฅ๋“ค์„ ์ˆ˜์ •ํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ ๋˜ํ•œ Django์— ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด๋ ค ์ˆ˜์ •์ด ํ•„์š”ํ•œ ์ •๋„์— ๋”ฐ๋ผ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋˜์–ด์„œ ๋ง์ด์ฃ ..! ์ด 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฒƒ์€ ์š”๊ธฐ์— ์ œ๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ์œผ๋‹ˆ ํ™•์ธํ•˜๊ณ  ์˜ค์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค!

ํ•ด๋‹น ๊ธ€์—์„œ๋Š” AbstractUser๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. AbstractUser๋Š” Django์˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ User Model์˜ ์นผ๋Ÿผ(๋ฐ์ดํ„ฐ)๋“ค์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿง ํ˜„์žฌ ์ƒํ™ฉ์€ ์–ด๋– ์‹ ๊ฐ€์š”

AbstractUser๋Š” ์žฅ๊ณ ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰ User Model ์—ญ์‹œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜์–ด ์ž๋™์œผ๋กœ DB์— ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— Django๊ฐ€ ์ด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ธฐ ์ „(migrate ์ „)์—! ์ž‘์—…์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ฏธ Django๊ฐ€ ์ด๋ฏธ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ „ AbstractUser ์‚ฌ์šฉ ์•ˆ๋˜๋‚˜์š”??!?!?!๐Ÿ˜ฑ

๊ทธ๋ž˜๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ํ•˜๋Š”๊ฒŒ ๊น”๋”ํ•˜์ง€๋งŒ ๋ฐฉ๋ฒ•์€ ์žˆ์ฃ ! ์•„๋ž˜์— ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ตฌ๋ถ„์ง€์–ด์„œ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๋‹ˆ ์ž˜ ๋”ฐ๋ผ์™€ ์ฃผ์„ธ์š”!

๊ธฐ๋ณธ์ ์ธ User Model

ย ์นผ๋Ÿผ๋ช…์„ค๋ช…ํ•„์ˆ˜์—ฌ๋ถ€๋ฐ์ดํ„ฐํƒ€์ž…ํฌ๊ธฐ
1idPKOint11
2username์ด๋ฆ„(์ „์ฒด)Ochar150
3first_name์„ฑXchar30
4last_name์ด๋ฆ„Xchar150
5email์ด๋ฉ”์ผXchar254
6password์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธOchar128
7is_staffadmin์ ‘์† ๊ฐ€๋Šฅ ์—ฌ๋ถ€Obool1
8is_activate๊ณ„์ • ํ™œ์„ฑ ์—ฌ๋ถ€Obool1
9is_superuser๋ชจ๋“  ๊ถŒํ•œ ํ™œ์„ฑ ์—ฌ๋ถ€Obool1
10last_login๋งˆ์ง€๋ง‰์œผ๋กœ ๋กœ๊ทธ์ธํ•œ ์‹œ๊ฐ„Odatetime6
11date_joined๊ณ„์ •์ด ์ƒ์„ฑ๋œ ๋‚ ์งœOdatetime6

User Model ํ™•์žฅ!

ํ…Œ์ด๋ธ” ์ƒ์„ฑ์ด ์ด๋ฏธ ๋˜์–ด ์žˆ๋‹ค๋ฉด (migate๋ฅผ ์ด๋ฏธ ํ•œ ๊ฒฝ์šฐ)

  • ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ํšŒ์›๊ณผ ๊ด€๋ จ๋œ ์•ฑ์— migrationsํด๋”์—์„œ __pycache__ํด๋”์™€ __init__.py๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‹ค ์ง€์›Œ์ฃผ์„ธ์š”.
  • DB์—์„œ ์‚ด๋ ค์•ผํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—…ํ•ด ์ฃผ์‹  ๋‹ค์Œ ๊ณผ๊ฐํ•˜๊ฒŒ DROPํ•ด ์ค๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ์ž‘์—…์„ ํ•œ ๋‹ค์Œ ๋ฐฑ์—…ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ DB์— ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋!

1. ์šฐ์„  ์šฐ๋ฆฌ๋งŒ์˜ User Model์„ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

  • accounts ์•ฑ ์•ˆ์— ์žˆ๋Š” models.py์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.
  • ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์นผ๋Ÿผ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋ฐ์ดํ„ฐ๋Š” None์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ €๋Š” ์•ฑ ์ด๋ฆ„์„ accounts, ๋ชจ๋ธ ์ด๋ฆ„์„ User๋กœ ํ–ˆ๋Š”๋ฐ ๋ฐ”๊พธ์…”๋„ ๋ฉ๋‹ˆ๋‹ค:)
1
2
3
4
5
6
7
from django.db import models
from django.contrib.auth.models import AbstractUser	# AbstractUser ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

class User(AbstractUser):
    test = models.CharField(max_length=20, default="")
    test2 = models.CharField(max_length=20, null=True)
    first_name = None

2. ์ด์ œ Djangoํ•œํ…Œ ์šฐ๋ฆฌ๊ฐ€ User Model์„ ๋”ฐ๋กœ ์ •์˜ํ–ˆ๋‹ค๊ณ  ์•Œ๋ ค์ค์‹œ๋‹ค.

  • settings.py์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”.
1
AUTH_USER_MODEL = 'accounts.User'
  • accounts์•ฑ ํด๋” ์•ˆ์˜ admin.py์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”. admin ํŽ˜์ด์ง€์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ์š”
1
2
3
4
from django.contrib import admin
from .models import User

admin.site.register(User)

3. ๊ทธ๋Ÿผ DB๋ฅผ ์ƒ์„ฑํ•ด ๋ณผ๊นŒ์š”?

  • ์ฝ˜์†”์ฐฝ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.
1
2
python manage.py makemigrations
python manage.py migrate

4. ๊ด€๋ฆฌ์ž๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  ์ƒ์„ฑ๋œ DB๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”!

1
2
python manage.py createsuperuser
python manage.py runserver

์™„์„ฑ์ž…๋‹ˆ๋‹ค! ๐ŸŽ‰

์ด์ œ User Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ Django์˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.๐Ÿ‘๐Ÿ‘๐Ÿ‘๐Ÿ‘

์ถ”๊ฐ€๋กœ mysql์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ•œ๊ธ€์„ ์ €์žฅํ•  ๋•Œ charset ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ DB์ƒ์„ฑ์‹œ utf8๋กœ ๊ผญ ์„ค์ •ํ•ด ์ฃผ์„ธ์š”!

This post is licensed under CC BY 4.0 by the author.

์žฅ๊ณ  User Model ํ™•์žฅ ๋ฐฉ๋ฒ•

Git ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜