Start Django Project
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
$ 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
λ‘ λ¨κ²¨λμ΄ κ΄λ¦¬νλ κ²μ΄ μ’λ€.
$ pip freeze > requirements.txt
project
βββ project_name
β βββ config # μ₯κ³ νλ‘μ νΈ μ€μ ν¨ν€μ§
β β βββ __init__.py
β β βββ settings.py
β β βββ urls.py
β β βββ wsgi.py
β βββ db.sqlite3
β βββ manage.py
βββ requirements.txt # μ€μΉν pip ν¨ν€μ§ λͺ©λ‘ νμΌ
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
March 05, 2019 - 16:21:39
Django version 2.1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
runserverλ₯Ό μ±κ³΅νλ©΄ http://localhost:8000/
λλ http://127.0.0.1:8000/
λ‘ νμΈ ν μ μλ€.
$ python manage.py runserver 8080
control
+ C
λ₯Ό νλ©΄ μ’
λ£λλ€.
μ νν μκ° μ€μ μ μν΄μ wiki timezone μμ μ°Ύμμ μ€μ ν΄μ€λ€.
LANGUAGE_CODE = 'ko'
TIME_ZONE = 'Asia/Seoul'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL
μ€μ λ°μ κ²½λ‘λ₯Ό μ€μ ν΄μ€λ€.
DEBUG = True
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',
'django.contrib.staticfiles',
]
django.contrib.admin
: κ΄λ¦¬μ© μ¬μ΄νΈ
django.contrib.auth
: μΈμ¦ μμ€ν
django.contrib.contenttypes
: 컨ν
μΈ νμ
μ μν νλ μ μν¬
django.contrib.sessions
: μΈμ
νλ μμν¬
django.contrib.messages
: messaging νλ μμν¬
django.contrib.staticfiles
: μ μ νμΌμ κ΄λ¦¬νλ νλ μμν¬
migrate λͺ
λ Ήμ settings.py
μ INSTALLED_APPS μ€μ μ νμνμ¬, λ°μ΄ν°λ² μ΄μ€ migrationsμ λ°λΌ νμν λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈμ μμ±νλ€.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying sessions.0001_initial... OK
migrateνκΈ° μ μ λΆνμν μ ν리μΌμ΄μ (INSTALLED_APPS)μ μ£Όμμ²λ¦¬ λλ μμ ν΄μ£Όλ©΄ μμ±λμ§μλλ€.
ModuleNotFoundError
....
File "/Users/jeongdaye/.pyenv/versions/3.7.2/lib/python3.7/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
Migrate μ€νμ λ€μκ³Ό κ°μ μ€λ₯κ° λ°μν μ μλ€. μ΄λ¬ν κ²½μ°μλ
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install <version>
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.7.2
μκΈ°κ° μ€μ ν python versionμΌλ‘ λ€μ λͺ λ Ήμ΄λ₯Ό μ€νν΄μ£Όλ©΄ λλ€.
gitμΌλ‘ λ²μ κ΄λ¦¬μ gitμΌλ‘ κ΄λ¦¬λμ§ μμ νμΌ λͺ©λ‘μΈ .gitignore
νμΌμ μμ±ν΄ κ΄λ¦¬νλ€. μΌλ°μ μΌλ‘ Django νλ‘μ νΈμμ μ¬μ©νλ νμΌμ wgetμΌλ‘ μ¬μ©ν΄ μΉμμ 볡μ¬ν΄μ μ¬μ©ν κ²μ΄λ€.
$ wget https://gist.githubusercontent.com/LeeHanYeong/8758517113be32dd2e885fef81c4a96e/raw/00727ac4af42834e6282df05c61606aa396d5b9c/.gitignore