๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“๐Ÿ’ช/Django

2์ฃผ์ฐจ_1๋ฒˆ์งธ_ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ORM, admin

by ์ˆ˜์จ”์•™ 2022. 9. 22.

์–ด์šฐ ์žฅ๊ณ  ์ฒ˜์Œ ๋„ˆ๋ฌด ํž˜๋“œ๋„นใ…Žใ…Ž

์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์šด๋‚ด์šฉ ๋จผ์ € ์ •๋ฆฌํ•ด๋ณด์ž

 

1.ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ

  • ๋งŒ๋“ค ํ”„๋กœ์ ํŠธ์™€ ๊ตฌํ˜„ํ•  ๊ธฐ๋Šฅ์„ ์ƒ๊ฐํ•˜๊ธฐ
  • ๊ธฐ๋Šฅ์„ ํ•  ์•ฑ์„ ๋งŒ๋“ค๊ธฐ(user, tweet)

2. DB์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ

  • ์žฅ๊ณ  ์‹คํ–‰ ํ›„ db.sqlite3 ์ƒ์„ฑํ™•์ธ
  • ์‚ฌ์šฉ์ž ๋ชจ๋ธ(user ์•ฑ ์ž‘์—…) ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ฃ๊ธฐ

3. ๊ด€๋ฆฌ์ž ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

  • ํ„ฐ๋ฏธ๋„๋กœ ๊ด€๋ฆฌ์ž ๊ณ„์ •๋งŒ๋“ค๊ธฐ
  • ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌํ•  UserModel์„ admin๊ณ„์ •์— ๋„ฃ๊ธฐ

์•„๋ž˜์— ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด์ž!


 

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ํ”„๋กœ์ ํŠธ๋Š” 'sns' ์ด๊ธฐ ๋•Œ๋ฌธ์—

1. ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ (ํšŒ์›๊ฐ€์ž… / ๋กœ๊ทธ์ธ / ๋กœ๊ทธ์•„์›ƒ)

2. ๊ธ€์“ฐ๊ธฐ

3. ์นœ๊ตฌ๋งŒ๋“ค๊ธฐ

์ •๋„์˜ ๊ธฐ๋Šฅ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์šฉ์ž์™€ ๊ธ€๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์•ฑ๋“ค์„ ๋งŒ๋“ค์–ด๋ณด์ž

 

1. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•  user, tweet ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด์ž

  • user์•ฑ - ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ( ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ)์„ ๋‹ด๋‹น
  • tweet์•ฑ - ๊ธ€ ๊ด€๋ฆฌ( ๊ธ€์“ฐ๊ธฐ, ์‚ญ์ œ, ์ˆ˜์ •, ๋Œ“๊ธ€)์„ ๋‹ด๋‹น

 

ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ž…๋ ฅํ•ด์ฃผ์ž

$ django-admin startapp user
$ django-admin startapp tweet

์ด๋ ‡๊ฒŒ ์ขŒ์ธก์— tweet, user ์•ฑ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

2. ์žฅ๊ณ ๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๊ณ  ์žˆ์„ํ…Œ๋‹ˆ ์žฅ๊ณ ํ•œํ…Œ ์•Œ๋ ค์ฃผ์ž!

settings.py๋Š” Django๊ฐ€ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ์•Œ์•„์•ผํ•  ์ •๋ณด๋“ค์„ ์ ์–ด์ฃผ๋Š”๋ฐ

์ ํ˜€์žˆ๋Š” ๋งŽ์€ ์„ค์ •๋“ค ์ค‘์— INSTALLED_APPS๋ฅผ ์ฐพ์•„์„œ

์•„๋ž˜์™€ ๊ฐ™์ด tweet, user๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

 

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

์ด๋Ÿฌ๋ฉด ๋! 

 

 

 


์žฅ๊ณ ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ž˜ ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ์„ ํ•˜๊ณ 

ORM์„ ํ™œ์šฉํ•ด์„œ ์šฐ๋ฆฌ์˜ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด๋ณด์ž!

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐํ•˜๊ธฐ

 

1. db.sqlite3 ์ƒ์„ฑํ™•์ธํ•˜๊ธฐ

 

settings.py์˜ DATABASES ๋ถ€๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ž๋™ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด

์žฅ๊ณ ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ์ž

 

ํƒ์ƒ‰๊ธฐ์— db.sqlite3

์žˆ๋Š”๊ฑฐ ํ™•์ธํ•˜์ž

ํŒŒ์ด์ฐธ์€ ์ด๋Ÿฐ์ €๋Ÿฐ ์„ค์ •์„ ํ•ด์ฃผ๋Š”๋ฐ

vscode๋Š” ์ต์Šคํ…์…˜ sqlite.db ์„ค์น˜ํ•ด์„œ ๋”ฐ๋กœ ์„ค์ • ์•ˆํ•ด์ค˜๋„ ๋œ๋‹ค!

 

2. User Model ๋งŒ๋“ค๊ธฐ

 

ORM์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด ๋ฉ์–ด๋ฆฌ๋กœ ๋ณด๊ณ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ SQL์–ธ์–ด๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค๋กœ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค!

 

ํด๋ž˜์Šค๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด๋ณด์ž!

 

์‚ฌ์šฉ์ž๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด๋ณด์ž

 

- user model์— ๋Š” ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ƒํƒœ๋ฉ”์„ธ์ง€, ์ƒ์„ฑ์ผ์„ ๋„ฃ์–ด๋ณด์ž

 

ํƒ์ƒ‰๊ธฐ user -> models.py๋ฅผ ์—ด์–ด์„œ ์•„๋ž˜์ฝ”๋“œ ๋ถ™์—ฌ๋„ฃ์ž!

#user/models.py
from django.db import models


# Create your models here.
class UserModel(models.Model):
    class Meta:
        db_table = "my_user"

    username = models.CharField(max_length=20, null=False)
    password = models.CharField(max_length=256, null=False)
    bio = models.CharField(max_length=256, default='')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 

UserModel ์ด๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ

์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, bio, ์ƒ์„ฑ์ผ, ์ˆ˜์ •์ผ์„ ๋„ฃ์—ˆ๋‹ค!

 

UseModel ๋ฐ‘์— Meta๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”๋ฐ

์ด๊ฑด db์— ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค!

 

django ๋ชจ๋ธ ํ•„๋“œ์˜ ์ข…๋ฅ˜

๋ฌธ์ž์—ด : CharField, TextField
๋‚ ์งœ/์‹œ๊ฐ„: DateTimeField, DateField, TimeField
์ˆซ์ž : IntegerField, FloatField
๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ด€์„ ์ง€์–ด ์ค„ ๋•Œ : ForeignKey

 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„ฃ๊ธฐ!

 

ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ์ž…๋ ฅํ•ด์ค€๋‹ค

myspartasns์— ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ•œ์ค„์”ฉ ์ž…๋ ฅํ•ด์ฃผ์ž!

์˜คํƒ€ ์•ˆ๋‚˜๊ฒŒ ์กฐ์‹ฌํ•˜์ž^_^

 

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ณ€๊ฒฝ์„ ์•Œ๋ ค์ฃผ๋Š” ๋ช…๋ น์–ด

python manage.py makemigrations

 

- ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ ์šฉ์‹œ์ผœ์ฃผ๋Š” ๋ช…๋ น์–ด

python manage.py migrate

 

๊ทธ๋Ÿฌ๋ฉด ์ž˜ ๋“ค์–ด๊ฐ„๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹นใ…Ž.ใ…Ž

 

 


๊ด€๋ฆฌ์ž๊ณ„์ • ๋งŒ๋“ค๊ธฐ

 

admin

๊ด€๋ฆฌ์žํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ!

์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ •๋„ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ถ”๊ฐ€, ์‚ญ์ œ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค!

 

์ฉ๋‹ค!

 

ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜ ์ฝ”๋“œ ์ž…๋ ฅํ•ด์„œ ์„œ๋ฒ„ ์‹คํ–‰์‹œํ‚ค๊ณ  ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆฐ๋‹ค์Œ

python manage.py runserver

 

http://127.0.0.1:8000/๋กœ ๋“ค์–ด๊ฐ€๋ฉด

์š”๋Ÿฐ ํ™”๋ฉด์ด ๋œจ๋Š”๋ฐ

 

http://127.0.0.1:8000/admin ์„ ์ž…๋ ฅํ•˜๊ณ  ๋“ค์–ด๊ฐ€๋ฉด 

์š”๋Ÿฐ ํ™”๋ฉด์ด ๋œฌ๋‹ค!!

 

์ •๋ง ์‹ ๊ธฐํ•œ ์ผ์ด๋‹ค.

๋”ฐ๋กœ ๋งŒ๋“ ๊ฒŒ ์—†๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ์•Œ์•„์„œ ๋‹ค ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค๋‹ˆ... ๋‚ด ์žฅ๊ณ ๋Š” ์•„์ฃผ ์ž˜ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๊ตฐ!!

 

์ผ๋‹จ ctrl + c๋กœ ๋‚˜์™€์ฃผ๊ณ 

 

1. ๊ด€๋ฆฌ์ž ๊ณ„์ • ๋งŒ๋“ค๊ธฐ

 

ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์ž

python manage.py createsuperuser

 

 

๊ทธ๋Ÿฌ๋ฉด username, email, password๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ๋‚˜์˜จ๋‹ค!

์—ฌ๊ธฐ์„œ password๋ฅผ ๋„ˆ๋ฌด ๋Œ€์ถฉ ํ–ˆ๋”๋‹ˆ ์œ ํšจ์„ฑ๊ฒ€์‚ฌ ๋ฌด์‹œํ•˜๊ณ  ๊ฑ ๋งŒ๋“ค๊ฑฐ๋ƒ๊ณ  ๋ฌผ์–ด๋ณธ๋‹ค..ํžˆํžˆ

y ํ•˜๋‹ˆ๊นŒ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋๋‹ค! ์žฅ๊ณ  ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ๋งŒ๋“ ๊ฒƒ!!

 

๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ์ฃผ์ž!

ํ„ฐ๋ฏธ๋„์— python manage.py runserver~~!!~

admin ํ™”๋ฉด์— ์•„์ด๋”” ๋น„๋ฒˆ ์ž…๋ ฅํ•˜๋ฉด ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค!!!!

 

 

user์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด

๋ฐฉ๊ธˆ ๋งŒ๋“  ๊ด€๋ฆฌ์ž ๊ณ„์ •์ด ๋ณด์ธ๋‹ค!!! ์˜ค์˜ˆ!!

 

 

2. admin ๊ณ„์ •์— UserModel ๋„ฃ๊ธฐ

 

์ด์ œ ์—ฌ๊ธฐ django admin ๊ณ„์ •์— ์•„๊นŒ ๋งŒ๋“  UserModel์„ ๋„ฃ์–ด์ฃผ์ž!!

user์— ์žˆ๋Š” models.py์— ์•„๊นŒ UserModel์ด๋ผ๋Š” class๋ฅผ ๋งŒ๋“ค์–ด์คฌ๋Š”๋ฐ

userํด๋”์— models๋ฅผ adminํŽ˜์ด์ง€์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” admin.py๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค!

 

์•„๋ž˜ ์ฝ”๋“œ ๋ณต๋ถ™ํ•˜๊ณ  admin ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจํ•ด์ฃผ์ž!

from django.contrib import admin # admin tool์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค!
from .models import UserModel # ๋‚ด๊ฐ€ ๋งŒ๋“  UserModel ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜ค์ž!

# Register your models here.
admin.site.register(UserModel) # ์ด ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ UserModel์„ Admin์— ์ถ”๊ฐ€ ํ•ด ์ค๋‹ˆ๋‹ค

 

๋“ค์–ด์™€์žˆ๋‹ค!!!!

 

User models๋ฅผ ํด๋ฆญํ•˜๊ณ  +add ์•„๋‹ˆ๋ฉด add user model+์„ ๋ˆ„๋ฅด๋ฉด 

 

์•„๊นŒ ๋งŒ๋“  ์ด๋ฆ„, ๋น„๋ฒˆ, bio๊ฐ€ ๋‚˜์˜จ๋‹ค!

๊ทผ๋ฐ created_at์ด๋ž‘ updated_at๋„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ทธ๊ฑด ์™œ ์•ˆ๋‚˜์™”๋ƒ!

 

์™œ๋ƒ๋ฉด ์žฅ๊ณ ๊ฐ€ ์ž๋™์œผ๋กœ ์‹œ๊ฐ„๊ณผ ์ˆ˜์ •ํ•œ์‹œ๊ฐ„, ์ƒ์„ฑํ•œ ์‹œ๊ฐ„์„ ๋„ฃ์–ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค!

 

 

 

 

 

 

 

 

728x90

๋Œ“๊ธ€