Skip to content

Instantly share code, notes, and snippets.

@openhubdev
Last active March 9, 2021 18:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save openhubdev/be176fd0f674594951577b8d84c6248f to your computer and use it in GitHub Desktop.
Save openhubdev/be176fd0f674594951577b8d84c6248f to your computer and use it in GitHub Desktop.

๐Ÿ ์žฅ๊ณ  (Django) 101

์šฐ์„  Python> = 3.3์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

python -Vor python3 -V

0. ํ”„๋กœ์ ํŠธ ํด๋” ๋งŒ๋“ค๊ธฐ (=์ปจํ…Œ์ด๋„ˆ root)

1. ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

๊ทธ ํ”„๋กœ์ ํŠธ ํด๋” ์•ˆ์—์„œ ์ด ๋ช…๋ น์–ด ์น˜๊ธฐ:

python3 -m venv venv

2. ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”

source venv/bin/activate

์ด์ œ command prompt์— (venv)๊ฐ€ ๋ถ™์–ด ๋‚˜์˜ต๋‹ˆ๋‹ค; ๊ทธ๊ฒƒ์ด ํ˜„์žฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด์— ์žˆ๋‹ค๋Š” ์ฆ๋ช…

์‚ฌ์šฉ ์ค‘์˜ ์ปดํ“จํ„ฐ์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Python์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋•Œ python -V๋ฅผ ์ž…๋ ฅํ•ด๋ณด๋ฉด ์ง€๊ธˆ ๋งŒ๋“  ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ python ๋ฒ„์ „ (์ด ๊ฒฝ์šฐ python3)์ด ํ™•์‹คํžˆ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

3. Django ์„ค์น˜

pip install django

ํŠน์ • ๋ฒ„์ „์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค;์˜ˆ๋ฅผ ๋“ค์–ด pip install Django==3.1.7

pip freeze: ์ง€๊ธˆ๊นŒ์ง€ ํ˜„ Django project์— ์„ค์น˜ํ•œ python package ๋ชฉ๋ก์„ ๋””์Šคํ”„๋ ˆ์ด ํ•ด์คŒ

4. ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

django-admin startproject myproject

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด "myproject" ํด๋”๊ฐ€ 2๊ฐœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค = ์™ธ๋ถ€ & ๋‚ด๋ถ€; ์›ํ•˜๋Š” ๋Œ€๋กœ ์™ธ๋ถ€ "myproject" ํด๋”์˜ ์ด๋ฆ„์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ๋‚ด๋ถ€ "myproject" ํด๋” ์ด๋ฆ„์€ ๋ฐ”๊พธ์ง€ ๋งˆ์„ธ์š”. ์ด ๋‚ด๋ถ€ "myproject" ํด๋”๊ฐ€ "settings.py"๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‚ด์žฅํ•˜๋Š” Django ๊ทผ๋ณธ "ํ”„๋กœ์ ํŠธ" ํด๋”์ž…๋‹ˆ๋‹ค.

ํด๋” ๊ธฐ๋ณธ ๊ตฌ์กฐ


(์ปจํ…Œ์ด๋„ˆ root)
โ”œโ”€โ”€ /venv
โ”œโ”€โ”€ /myproject  -> ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ ์ปจํ…Œ์ด๋„ˆ (์ด๋ฆ„ ๋ฐ”๊พธ์…”๋„ ๋ฉ๋‹ˆ๋‹ค!)
โ”‚   โ”œโ”€โ”€ manage.py  -> ํŒŒ์ด์ฌ "์‹คํ–‰"์— ์ค‘์š”ํ•œ ํŒŒ์ผ!!! 
โ”‚   โ”œโ”€โ”€ /myproject  -> "์ง„์งœ" ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ ํด๋”
โ”‚   โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”‚   โ”œโ”€โ”€  asgi.py
โ”‚   โ”‚   โ”œโ”€โ”€  settings.py -> ***Django ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์„ค์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ํŒŒ์ผ!!
โ”‚   โ”‚   โ”œโ”€โ”€  urls.py -> ***Django ํ”„๋กœ์ ํŠธ์˜ url paths ์„ค์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ํŒŒ์ผ!!
โ”‚   โ”‚   โ”œโ”€โ”€  wsgi.py
โ”‚ ...
โ”‚ # -- ์ด์ œ ๋‹ค๋ฅธ django app์€ ์ด ๋ ˆ๋ฒจ์—์„œ ๊ฐ๊ฐ ํด๋”๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
โ”‚   โ”œโ”€โ”€ /other-app01  -> ์žฅ๊ณ  "์•ฑ 01" ํด๋”..
โ”‚   โ”œโ”€โ”€ /other-app02  -> ์žฅ๊ณ  "์•ฑ 02" ํด๋”..
...

5. "manage.py"๊ฐ€ ์žˆ๋Š” django ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ๋“ค์–ด๊ฐ„ ํ›„ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰


cd myproject
python manage.py runserver

โœจ ์„ฑ๊ณต์ด๋ฉด http://127.0.0.1:8000/ or http://localhost:8000/ ์ƒ์„ฑ!


์„œ๋ฒ„ ์ค‘์ง€ : CTRL + C

Venv๋ฅผ ์ข…๋ฃŒํ•˜๋ ค๋ฉด

deactivate

django ๊ด€๋ฆฌ์ž ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์ˆ˜ํผ ์œ ์ € ๋งŒ๋“ค๊ธฐ

python manage.py createsuperuser

์ด๊ฒƒ์„ ์ด์šฉํ•ด http://127.0.0.1:8000/admin or http://localhost:8000/admin ์— ๋กœ๊ทธ์ธ


๊ธฐ์กด DJANGO ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ์‹œํ–‰ํ•˜๊ณ ์ž ํ•  ๋•Œ:

ํ”„๋กœ์ ํŠธ ์ปจํ…Œ์ด๋„ˆ ๋ฃจํŠธ์—์„œ ๋‹ค์Œ ๋‘๊ฐ€์ง€ ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

source venv/bin/activate

๊ฐ€์ƒ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”

python manage.py runserver

ํŒŒ์ผ์ด์žˆ๋Š” ํด๋”๋กœ ์˜ฎ๊ฒจ ๊ฐ„ ํ›„ manage.py ์„œ๋ฒ„ ์‹คํ–‰!


๊ธฐํƒ€

SQLite ๋Œ€์‹  Postgre DB ์„ค์ •:

# @Django-ํ”„๋กœ์ ํŠธ-ํด๋”/settings.py

DATABASES = {
    'default': {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "<your-postgresql-db-name>",
        "USER": "<your-postgresql-username>",
        "PASSWORD": "<your-postgresql-password>",
    }
}

๐Ÿ‘ 'requirements.txt' ์„ค์ •

pip freeze > requirements.txt

์„ค์น˜๋œ ๋ชจ๋“  Django ํŒจํ‚ค์ง€๋ฅผ "requirements.txt"๋ผ๋Š” ์ƒˆ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ

๐Ÿ’ช๊ธฐ์กด DJANGO PROJ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด? ๊ฐ€๋Šฅํ•˜๋ฉด ์‰ฝ๊ฒŒ "requirements.txt"๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

pip install -r requirements.txt


HAPPY LEARNING! ๐Ÿ‘

DJANGO ํ•œ๊ธ€ ๊ฐ€์ด๋“œ: https://docs.djangoproject.com/ko/3.1/

Django ํ›‘์–ด๋ณด๊ธฐ (Django at a glance) https://docs.djangoproject.com/ko/3.1/intro/overview/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment