Start Django Project

ν”„λ‘œμ νŠΈ λ§Œλ“€κΈ°

$ django-admin startproject <project_name>

μ΄λ•Œ projectλͺ…μœΌλ‘œ μ„€μ • νŒ¨ν‚€μ§€ λͺ…이 κ²°μ •λ˜λ―€λ‘œ startproject에 μ „λ‹¬λ˜λŠ” ν”„λ‘œμ νŠΈλͺ…μœΌλ‘œ configλ₯Ό μ‚¬μš©ν•  것이닀.

$ django-admin startproject config

ν”„λ‘œμ νŠΈ μƒμ„±ν›„μ—λŠ” 폴더λͺ…을 ν”„λ‘œμ νŠΈ λͺ…μœΌλ‘œ λ³€κ²½ν•΄μ€€λ‹€.

$ mv config <project_name>

κΈ°λ³Έ 디렉토리 및 파일 ꡬ쑰

ν˜„μž¬ 디렉토리에 <project_name> 디렉토리와 μ•„λž˜μ˜ νŒŒμΌλ“€μ΄ μƒμ„±λœλ‹€.

project_name/
β”œβ”€β”€ db.sqlite3
β”œβ”€β”€ manage.py
└── config
    β”œβ”€β”€ __init__.py
    β”œβ”€β”€ settings.py
    β”œβ”€β”€ urls.py
    └── wsgi.py
  • manage.py : μ‚¬μ΄νŠΈ 관리λ₯Ό λ„μ™€μ£ΌλŠ” 역할을 ν•˜λŠ” μŠ€ν¬λ¦½νŠΈμ΄λ‹€. λ‹€λ₯Έ μ»΄ν“¨ν„°μ—μ„œ λ‹€λ₯Έ μ„€μΉ˜ μž‘μ—…μ—†μ΄ μ›Ή μ„œλ²„λ₯Ό μ‹œμž‘ν•  수 μžˆλ‹€.(좔후에 κ΄€λ ¨ 정보 update)

  • config/ : 디렉토리 내뢀에 ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•œ μ‹€μ œ python νŒ¨ν‚€μ§€λ“€μ΄ μ €μž₯λœλ‹€.

    • config.urls , config.settings λ‹€μŒκ³Ό 같이 ν”„λ‘œμ νŠΈ λ‚΄λΆ€ μ–΄λ””μ—μ„œλ‚˜ μ ‘κ·Ό(import)ν•  수 μžˆλ‹€.

  • config/__init__.py : ν•΄λ‹Ή 디렉토리가 νŒ¨ν‚€μ§€μ˜ μΌλΆ€μž„μ„ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€.

python version 3.3 λΆ€ν„°λŠ” __init__.py κ°€ 없어도 νŒ¨ν‚€μ§€λ‘œ μΈμ‹μ΄λ˜μ§€λ§Œ, ν•˜μœ„ 버전과 ν˜Έν™˜μ„ μœ„ν•΄ μƒμ„±ν•˜λŠ” 것이 μ•ˆμ „ν•˜λ‹€.

  • config/settings.py : ν˜„μž¬ Django ν”„λ‘œμ νŠΈμ˜ ν™˜κ²½/ꡬ성을 μ €μž₯ν•œλ‹€.(좔후에 κ΄€λ ¨ 정보 update)

  • config/urls.py : ν˜„μž¬ Django ν”„λ‘œμ νŠΈμ˜ URL선언을 μ €μž₯ν•œλ‹€. urlresolverκ°€ μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄ λͺ©λ‘μ„ ν¬ν•¨ν•œλ‹€.(좔후에 κ΄€λ ¨ 정보 update)

  • config/wsgi.py : ν˜„μž¬ ν”„λ‘œμ νŠΈλ₯Ό μ„œλΉ„μŠ€ν•˜κΈ° μœ„ν•œ WSGI config μ„€μ •νŒŒμΌμ΄λ‹€.

WSGI(Web Server Gateway Interface)

μ›Ήμ„œλ²„μ™€ 파이썬 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œν™˜κ²½ κ°„μ˜ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ κ·œμΉ™μ΄λ‹€.

μ—¬κΈ°μ„œ μ„€μΉ˜λœ pip νŒ¨ν‚€μ§€ λͺ©λ‘μ„ requirements.txt 둜 남겨두어 κ΄€λ¦¬ν•˜λŠ” 것이 μ’‹λ‹€.

ν”„λ‘œμ νŠΈ μ„œλ²„

μ„œλ²„ μ‹œμž‘ν•˜κΈ°

runserverλ₯Ό μ„±κ³΅ν•˜λ©΄ http://localhost:8000/ λ˜λŠ” http://127.0.0.1:8000/ 둜 확인 ν•  수 μžˆλ‹€.

image-20190305162527609

νŠΉμ • 포트둜 μ„œλ²„ μ‹œμž‘ν•˜κΈ°

μ„œλ²„ μ‹€ν–‰ μ’…λ£Œν•˜κΈ°

control + C λ₯Ό ν•˜λ©΄ μ’…λ£Œλœλ‹€.

ν”„λ‘œμ νŠΈ μ„€μ •(settings.py)

Timezone μ„€μ •

μ •ν™•ν•œ μ‹œκ°„ 섀정을 μœ„ν•΄μ„œ wiki timezone μ—μ„œ μ°Ύμ•„μ„œ μ„€μ •ν•΄μ€€λ‹€.

STATIC_ROOT μ„€μ •

STATIC_URL μ„€μ • 밑에 경둜λ₯Ό μ„€μ •ν•΄μ€€λ‹€.

ALLOWED_HOSTS

λ‹€μŒκ³Ό 같이 섀정이 λ˜μ–΄μžˆμ„λ•ŒλŠ” ['localhost', '127.0.0.1', '[::1]'] 에 λŒ€ν•΄μ„œ μœ νš¨ν•˜λ‹€.

INSTALLED_APPS

  • django.contrib.admin : κ΄€λ¦¬μš© μ‚¬μ΄νŠΈ

  • django.contrib.auth : 인증 μ‹œμŠ€ν…œ

  • django.contrib.contenttypes : 컨텐츠 νƒ€μž…μ„ μœ„ν•œ ν”„λ ˆμž„ μ›Œν¬

  • django.contrib.sessions : μ„Έμ…˜ ν”„λ ˆμž„μ›Œν¬

  • django.contrib.messages : messaging ν”„λ ˆμž„μ›Œν¬

  • django.contrib.staticfiles : μ •μ νŒŒμΌμ„ κ΄€λ¦¬ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬

λ°μ΄ν„°λ² μ΄μŠ€

migration

migrate λͺ…령은 settings.py 의 INSTALLED_APPS 섀정을 νƒμƒ‰ν•˜μ—¬, λ°μ΄ν„°λ² μ΄μŠ€ migrations에 따라 ν•„μš”ν•œ λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ„ μƒμ„±ν•œλ‹€.

migrateν•˜κΈ° 전에 λΆˆν•„μš”ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(INSTALLED_APPS)은 μ£Όμ„μ²˜λ¦¬ λ˜λŠ” μ‚­μ œν•΄μ£Όλ©΄ μƒμ„±λ˜μ§€μ•ŠλŠ”λ‹€.

ModuleNotFoundError

Migrate μ‹€ν–‰μ‹œ λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€. μ΄λŸ¬ν•œ κ²½μš°μ—λŠ”

μžκΈ°κ°€ μ„€μ •ν•œ python version으둜 λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•΄μ£Όλ©΄ λœλ‹€.

git 버전 관리

git으둜 버전 κ΄€λ¦¬μ‹œ git으둜 κ΄€λ¦¬λ˜μ§€ μ•Šμ„ 파일 λͺ©λ‘μΈ .gitignore νŒŒμΌμ„ 생성해 κ΄€λ¦¬ν•œλ‹€. 일반적으둜 Django ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” νŒŒμΌμ„ wget으둜 μ‚¬μš©ν•΄ μ›Ήμ—μ„œ 볡사해와 μ‚¬μš©ν•  것이닀.

μ°Έμ‘°νŽ˜μ΄μ§€

Last updated

Was this helpful?