๊ด€๋ฆฌ ๋ฉ”๋‰ด

yeon's ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป

[Django] Settings ๋ณธ๋ฌธ

Computer ๐Ÿ’ป/Python

[Django] Settings

yeon42 2022. 4. 13. 23:32
728x90

๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ ๊ตฌ์กฐ

Django ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ์ƒ์„ฑ๋œ ํŒŒ์ผ ๊ตฌ์กฐ


ํ”„๋กœ์ ํŠธ์ด๋ฆ„  
โ”œโ”€manage.py  
โ””โ”€ํ”„๋กœ์ ํŠธ์ด๋ฆ„  
    โ”œโ”€__init__.py  
    โ”œโ”€asgi.py  
    โ”œโ”€settings.py  
    โ”œโ”€urls.py  
    โ””โ”€wsgi.py  

ํ”„๋กœ์ ํŠธ์ด๋ฆ„ ํด๋” ์•ˆ์˜ ํ”„๋กœ์ ํŠธ์ด๋ฆ„ ์† ํŒŒ์ผ๋“ค - ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ์„ธํŒ…ํ•ด์ฃผ๋Š” ํŒŒ์ผ




wsgi.py, asgi.py


  • WSGI๋ž€ Web Server Gateway Inteface์˜ ์ค€๋ง๋กœ ํŒŒ์ด์ฌ์˜ ํ‘œ์ค€ ๊ฒŒ์ดํŠธ์›จ์ด ์ธํ„ฐํŽ˜์ด์Šค

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ์„œ๋ฒ„๋Š” ์ •์ ์ธ ํŽ˜์ด์ง€๋ฐ–์— ๋ณด์—ฌ์ฃผ์ง€ ๋ชปํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท์—์„œ ๋ณด๋Š” ๋™์ ์ธ ํŽ˜์ด์ง€๋“ค์€ ์›น์„œ๋ฒ„๊ฐ€ ์ „์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜(django, flask ๋“ฑ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ)์˜ ๋„์›€์œผ๋กœ ๋ณด๊ฒŒ ๋œ๋‹ค.

  • ๋”ฐ๋ผ์„œ ์›น ์„œ๋ฒ„์™€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์†Œํ†ต์„ ํ•ด์•ผ ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋กœ ๋™์ ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ž„!

  • but, ์›น ์„œ๋ฒ„๋Š” ๋Œ€๋ถ€๋ถ„ python์œผ๋กœ ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— python ๊ธฐ๋ฐ˜์˜ django์™€ ์†Œํ†ต์„ ํ•ด์ค„ ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ์—ฌ๊ธฐ์„œ ๋“ฑ์žฅํ•˜๋Š” ์›น ์„œ๋ฒ„์™€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋Š” ์ค‘๊ฐ„ ๋งค๊ฐœ์ฒด(๋ฏธ๋“ค์›จ์–ด)๊ฐ€ ๋“ฑ์žฅํ•˜๋Š”๋ฐ, ๊ทธ ์˜ˆ์‹œ๋กœ WSGI, ASGI, CGI, FASTCGI ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—์„œ ์š”์ฒญ์„ ๋ณด๋ƒ„
  2. ์›น ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ๋ฐ›์Œ. ์ด ๋•Œ ๋™์ ์ธ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ๋‹ค๋ฉด WSGI ์„œ๋ฒ„(๋ฏธ๋“ค์›จ์–ด)๋ฅผ ํ˜ธ์ถœํ•จ
  3. WSGI ์„œ๋ฒ„๋Š” WSGI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ (ex. django)์„ ํ˜ธ์ถœํ•จ
  4. ํ˜ธ์ถœ๋ฐ›์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์š”์ฒญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰
  5. ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ WSGI ์„œ๋ฒŒ๋ฅด ํ†ตํ•ด ์›น ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๊ณ , ์›น ์„œ๋ฒ„๋Š” ์ตœ์ข… ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋ƒ„


์‹ค์Šต

  • ํ”„๋กœ์ ํŠธ ์ „์ฒด๋ฅผ ์„ธํŒ…์„ ํ•ด์ฃผ๋Š” ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์ด ํด๋”๋กœ ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์€ ํŒŒ์ผ ๊ตฌ์กฐ์ ์œผ๋กœ ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•ด๋ณด์ž.
ํ”„๋กœ์ ํŠธ์ด๋ฆ„  
โ”œโ”€manage.py  
โ””โ”€config
    โ”œโ”€__init__.py  
    โ”œโ”€asgi.py  
    โ”œโ”€urls.py  
    โ””โ”€wsgi.py  
    โ””โ”€settings
        โ”œโ”€settings.py  

์ดํ›„ python manage.py runserver๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ํด๋” ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • manage.py, asgi.py, wsgi.py์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ์œ„์น˜ ์„ค์ •์„ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ

โœ”๏ธ settings.py

# BASE_DIR = Path(__file__).resolve().parent.parent.parent
BASE_DIR = Path(__file__).resolve().parent.parent.parent
  • ํ•ด๋‹น settings.py ํŒŒ์ผ์ด ์žˆ๋Š” ์œ„์น˜์—์„œ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ: ํ”„๋กœ์ ํŠธ ์ด๋ฆ„

โœ”๏ธ asgi.py, wsgi.py, manage.py

# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.settings')



์ดํ›„ ๋‹ค์‹œ python manage.py runserver๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์„œ๋ฒ„๋Š” ๋™์ž‘ํ•˜์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฌ๋‹ค.


'''
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, session. Run 'python manage.py migrate' to apply them.
'''


์ด๋Š”

python manage.py migrate

๋ฅผ ์ž‘์„ฑํ•ด migrate์„ ๊ฐ€๋™ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ์‹œ์ผœ์•ผ ํ•œ๋‹ค.


StartApp

  • ์žฅ๊ณ ์—์„œ App์„ ์ƒ์„ฑํ•œ ํ›„ ๋Œ๋ ค๋ณด์ž.
  • App: ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ App๋“ค์ด ๋ชจ์—ฌ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • Django ๋‚ด์— Landing์ด๋ผ๋Š” ์ด๋ฆ„์˜ App์„ ๋งŒ๋“ค์ž.
python manage.py startapp Landing
ํ”„๋กœ์ ํŠธ์ด๋ฆ„
โ”œโ”€manage.py
โ”œโ”€Landing
|   โ”œโ”€__init__.py
โ”‚   โ”œโ”€admin.py
โ”‚   โ”œโ”€apps.py
โ”‚   โ”œโ”€models.py
โ”‚   โ”œโ”€tests.py
โ”‚   โ”œโ”€views.py
โ”‚   โ””โ”€migrations
โ””โ”€config
   โ”œโ”€__init__.py
   โ”œโ”€asgi.py
   โ”œโ”€urls.py
   โ”œโ”€wsgi.py
   โ””โ”€settings
      โ””โ”€settings.py 
Comments