Project

Django๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ํ”Œ๋žซํผ ๋งŒ๋“ค๊ธฐ

serin99 2023. 5. 31. 22:35
728x90

๐Ÿ˜€ ํ”„๋กœ์ ํŠธ ํฌ์ŠคํŒ…์€

๊ฐœ์ธ ์ œ์ž‘ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฆฌ๋ทฐํ•˜๊ณ  ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๋Š” ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.

 

 ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Django ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ

์ง์ ‘ ์›น ํ”Œ๋žซํผ์„ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.


๐Ÿค” ํ”Œ๋žซํผ์ด๋ž€?

 

์ผ๋ฐ˜์ ์œผ๋กœ ํ”Œ๋žซํผ์ด๋ž€

์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ด์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

IT ๋ถ„์•ผ์—์„œ์˜ ํ”Œ๋žซํผ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘๋™์‹œํ‚ฌ ๋•Œ

๊ธฐ๋ฐ˜์ด ๋˜๋Š” OS ์ข…๋ฅ˜๋‚˜ ํ™˜๊ฒฝ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 


๐Ÿค” ์žฅ๊ณ  (django)๋ž€?

 

์žฅ๊ณ ๋Š” ํŒŒ์ด์ฌ์œผ๋กœ ์ž‘์„ฑ๋œ ์˜คํ”ˆ ์†Œ์Šค ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

 

์›น ํ”„๋ ˆ์ž„ ์›Œํฌ๋Š” ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋‚˜, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์›น ์„œ๋น„์Šค ๊ฐœ๋ฐœ์˜

๋ณด์กฐ์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ”„๋ ˆ์ž„ ์›Œํฌ์˜ ์ผ์ข…์ž…๋‹ˆ๋‹ค.

 

๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ, ํ•œ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ๋ชจ๋‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ

๊ธฐ๋Šฅ ๋ณ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ•ฉ์น˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

์žฅ๊ณ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ MVT ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

Model ๋ฐ์ดํ„ฐ์˜ ์›์ฒœ์ด ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
View ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋ชจ๋ธ์— ์š”์ฒญํ•˜๊ณ , ๊ฒฐ๊ณผ๊ฐ’์„
HTML ๋ฌธ์„œ์— ๋‚˜ํƒ€๋‚ด๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
Template ํ™”๋ฉด์˜ UI๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 


 

django ์„ค์น˜

 

1. ๋จผ์ € Django๋ฅผ ์„ค์น˜ํ•˜๊ธฐ ์ „์— ํŒŒ์ด์ฌ์„ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

   ์›น์œผ๋กœ ์„ค์น˜ : https://www.python.org/downloads/

(์ฃผ์˜! ํŒŒ์ด์ฌ ํด๋”๋ฅผ PATH์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ•์Šค์— ๊ผญ ์ฒดํฌํ•ด์•ผ ํ•œ๋‹ค.)

 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

   vscode๋กœ ์„ค์น˜ : Ctrl+Shift+X๋ฅผ ๋ˆŒ๋Ÿฌ python ๊ฒ€์ƒ‰ ํ›„ ์„ค์น˜ํ•œ๋‹ค.

 

 

 

2. vscode์—์„œ ํ„ฐ๋ฏธ๋„์ฐฝ์„ ์—ด๊ณ  pip install pipenv ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ pipenv๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

 

pip ๋ช…๋ น์–ด๋ž€ ํŒŒ์ด์ฌ์œผ๋กœ ์ž‘์„ฑํ•œ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋„๊ตฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

pip ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด pipenv๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ด์œ ๋Š”

 

ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹จ์ผ์˜ ํŒจํ‚ค์ง€๊ฐ€  ์•„๋‹Œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ,

์ด๊ฒƒ์„ ์ „์—ญ์œผ๋กœ ๋‹ค์šด๋ฐ›์„ ๊ฒฝ์šฐ ํŒจํ‚ค์ง€๋“ค ๊ฐ„์˜ ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์–ด

 

ํด๋”๋ฅผ ๊ฐ€์ƒ ํ™˜๊ฒฝ์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“๊ณ  

๊ฐ€์ƒ ํ™˜๊ฒฝ ์•ˆ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์ˆ˜์›”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

   

pipenv๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

3. ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ ์ƒ์„ฑ ํ›„, ํ•ด๋‹น ๊ฒฝ๋กœ์—์„œ pipenv --three ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ๊ตฌ์„ฑํ•œ๋‹ค.

 

 



4. ๊ฐ€์ƒํ™˜๊ฒฝ์ด ๊ตฌ์„ฑ๋˜์—ˆ์œผ๋ฉด, pipenv shell ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

 

ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ํ†ตํ•ด ํ™•์ธํ•ด ๋ณด๋ฉด 

๊ธฐ์กด bash์—์„œ pipenv๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ์•„๋ž˜์™€ ๊ฐ™์€ pipfile์ด ํ•˜๋‚˜ ์ƒ์„ฑ๋˜๋Š”๋ฐ

์ผ์ข…์˜ ๋ชฉ์ฐจ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 


5. pipenv install Django๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Django๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
   (๋’ค์— ๋ฒ„์ „์„ ๋ถ™ํ˜€์ฃผ๋ฉด ํ•ด๋‹น ๋ฒ„์ „์œผ๋กœ ์„ค์น˜ ๊ฐ€๋Šฅ) 
   python -m django --version๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•œ ์žฅ๊ณ ์˜ ๋ฒ„์ „ ํ™•์ธ ๊ฐ€๋Šฅ

 

์œ„์™€ ๊ฐ™์€ ์„ค์น˜ ์™„๋ฃŒ ๋ช…๋ น์–ด๊ฐ€ ๋‚˜์˜ค๋ฉฐ, 

 

ํŒจํ‚ค์ง€์— ์žฅ๊ณ ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

์ด๋•Œ django = "*"์˜ ์˜๋ฏธ๋Š” ์žฅ๊ณ  ์„ค์น˜์‹œ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์นญ์„ ํ•˜์ง€ ์•Š์•„

์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์„ค์น˜๋˜์–ด "*"๋กœ ํ‘œ๊ธฐ๋œ ๊ฒƒ์ด๋‹ค.  


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

 

 

1. [django-admin startproject ์ด๋ฆ„] ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  
ํ”„๋กœ์ ํŠธ ํ•˜์œ„ ํŒŒ์ผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 


__init__.py  : ํ•ด๋‹น ํŒŒ์ผ์€ ํŒŒ์ด์ฌ์˜ ํŒจํ‚ค์ง€๊ฐ™์ด ๋‹ค๋ฃจ๋ผ๋Š” ์šฉ๋„๋กœ ๋‹จ์ˆœํžˆ ๋นˆ ํŒŒ์ผ์ด๋‹ค.

settings.py : Django ํ”„๋กœ์ ํŠธ์˜ ํ™˜๊ฒฝ ๋ฐ ๊ตฌ์„ฑ์„ ์ €์žฅํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค.

url.py : url์„ ์ €์žฅํ•˜๋Š” ํŒŒ์ผ์ด๋‹ค. Django๋กœ ์ž‘์„ฑ๋œ ์‚ฌ์ดํŠธ์˜ ๋ชฉ์ฐจ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
          ์ด ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๊ฒŒ ํ•˜์—ฌ url์„ ๊น”๋”ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.

asgi.py, wsgi.py : ASGI์™€ WSGI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•  ๋•Œ ์ ‘์ ์ด ๋˜๋Š” ํŒŒ์ผ์ด๋‹ค. 
 
(Asgi์™€ wsgi๋Š” ์›น์„œ๋ฒ„์™€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ„ํ•œ ํŒŒ์ด์ฌ ํ”„๋ ˆ์ž„์›Œํฌ)

 


django ์•ฑ ๋งŒ๋“ค๊ธฐ

 

 

1. [django-admin startapp ์ด๋ฆ„] ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  
  ์ด๋ฒˆ ์‹œ๊ฐ„์— ๋‹ค๋ค„๋ณผ ํŒŒ์ผ์€ models.py์™€ admin.py์ด๋‹ค.


  models.py๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŒŒ์ผ์ด๋‹ค.
  ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์›น์ƒ์—์„œ ์œ ์ € ์ •๋ณด์—๋Š” ์•„์ด๋””, ํŒจ์Šค์›Œ๋“œ, ์ด๋ฆ„, ์ž๊ธฐ์†Œ๊ฐœ ๋“ฑ์ด ์žˆ๋Š”๋ฐ,
  ๊ทธ๊ฒƒ์„ models.py์„ ํ†ตํ•ด ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.

  
  admin.py๋Š” ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚ผ ํŒจ๋„์„ ๋‹ค๋ฃจ๋Š” ํŒŒ์ผ์ด๋‹ค.
  ๋งŒ๋“  ์•ฑ์€ ์–ด๋“œ๋ฏผ์—๊ฒŒ ์•Œ๋ ค์ฃผ์–ด์•ผ ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€์—์„œ ์•ฑ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
  ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ admin.py์—์„œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.  

 

 

 

1. models.py ํŒŒ์ผ ์ž‘์„ฑ

 

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

class User(AbstractUser):
	pass

 

 

 

2. ์•ฑ ์ถ”๊ฐ€


์•ฑ์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉด, ํ”„๋กœ์ ํŠธ์— ํ•ด๋‹น ์•ฑ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผํ•œ๋‹ค.
ํ”„๋กœ์ ํŠธ์˜ settings.py์˜ ํ•ด๋‹น ๋ถ€๋ถ„์— ์•ฑ์„ ๊ธฐ์ž…ํ•ด์ฃผ์–ด์•ผ ํ”„๋กœ์ ํŠธ์—
์•ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ์„ค์ •์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

PROJECT_APPS = [
	"users", "survey_user"
]

INSTALLED_APPS = INSTALLED_APPS + PROJECT_APPS

 

 

 

3. ๋””ํดํŠธ ์œ ์ € ๋ชจ๋ธ ๋ฎ์–ด์“ฐ๊ธฐ(override)


์žฅ๊ณ ์—์„œ๋Š”  AUTH_USER_MODEL์— ์„ค์ •๊ฐ’์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ๋””ํดํŠธ ์œ ์ € ๋ชจ๋ธ์„
๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด๋‘” ์œ ์ €๋ชจ๋ธ๋กœ ๋ฎ์–ด์”Œ์šฐ๋„๋ก ํ•œ๋‹ค.

   AUTH_USER_MODEL = "users.User"

 

 


 

1. admin.py ํŒŒ์ผ ์ž‘์„ฑ

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . import models
# Register your models here.

@admin.register(models.User)
class CustomUsearAdmin(UserAdmin):
	pass

 

 

์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€์— ํ•ด๋‹น ์•ฑ์˜ ๋‚ด์šฉ์„ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋Š”
ํด๋ž˜์Šค UserAdmin์„ importํ•ด์„œ admin ํŒจ๋„ ํ‹€์„ ๊ตฌ์„ฑํ•œ๋‹ค.

์ด๋•Œ, ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ (@admin.register(models.User))๋ฅผ ์ด์šฉํ•˜์—ฌ ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€์— ํ•ด๋‹น ์•ฑ์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

 


admin page ํ™•์ธํ•˜๊ธฐ

 

 

1. models.py๊ฐ€ ์™„์„ฑ์ด ๋˜๋ฉด,
   python manage.py makemigrations ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ
   migrate๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , 

   python manage.py migrate ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด migrate๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ์‹œํ‚จ๋‹ค.


@ ์ด migrate๋ช…๋ น์€ INSTALLED_APPS์„ค์ •์„ ํ™•์ธํ•˜๊ณ  mysite/settings.pyํŒŒ์ผ์˜
   ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋ฐ ์•ฑ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์— ๋”ฐ๋ผ
   ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.


2. python manage.py createsuperuser ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.



3. python manage.py runserver ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์—ด ์ˆ˜ ์žˆ๋‹ค.

   ์ด ๋ช…๋ น์€ ๋‚ด๋ถ€ IP ์˜ 8000๋ฒˆ ํฌํŠธ๋กœ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ๋„์šด๋‹ค.

 

config์—์„œ urls.py๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด

url ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

์ด url ๊ฒฝ๋กœ๋Š” admin page์˜ ๊ฒฝ๋กœ์ด๋ฉฐ,

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Username๊ณผ Password๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ™”๋ฉด์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์ด ๊ณณ์— ์ž์‹ ์ด ์„ค์ •ํ•œ admin ๊ณ„์ •์„ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด,

admin ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

728x90