PostgreSQL์— ๋Œ€ํ•œ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ์— PostgreSQL์„ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉํ•ด๊ณ ์ž ํ•œ๋‹ค.

 

๋จผ์ €, PostgreSQL์„ ์„ค์น˜ํ•˜๊ณ  DB๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

๋งฅ(Mac)์— PostgreSQL ์„ค์น˜ + DBeaver ์—ฐ๊ฒฐ

PostgreSQL ์„ค์น˜ 1. ํ„ฐ๋ฏธ๋„์—์„œ brew๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ brew install postgresql 2. ๋ฒ„์ „ ํ™•์ธ postgres -V 3. ์‹œ์ž‘ brew services start postgresql 4. ์ ‘์† psql postgres ์ข…๋ฃŒ brew services stop postgresql DBeaver ์—ฐ๊ฒฐ 1. DBeaver ๋‹ค์šด๋กœ

myminju.tistory.com

 

์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด Django์— psycopg2๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค.

pip install psycopg2

 

์„ค์น˜๊ฐ€ ๋˜์—ˆ์œผ๋ฉด settings.py์˜ DATABASE ํ•ญ๋ชฉ์— ์—ฐ๊ฒฐ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'project',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

 

๊ทธ ํ›„ ํ„ฐ๋ฏธ๋„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๊ณ  ์„œ๋ฒ„ ๊ตฌ๋™์„ ํ™•์ธํ•œ๋‹ค.

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

 

์•„๋ž˜์™€ ๊ฐ™์ด ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ์— ์ž˜ ์—ฐ๋™๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

 

Reference

https://velog.io/@chaeri93/Django-Django์™€-Postgresql-์—ฐ๋™ํ•˜๊ธฐ

Django๋Š” ์„ค์น˜ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ SQLite๊ฐ€ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด MySQL ์—ฐ๋™ ์ž‘์—…์„ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

1. ์ปค๋„ฅํ„ฐ ์„ค์น˜

mysqlclient ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ํŒŒ์ด์ฌ๊ณผ MySQL ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

pip install mysqlclient

 

2. settings.py ์„ค์ •

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    
        'NAME': '์—ฐ๋™ํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„',                  
        'USER': 'DB ์ ‘์† ๊ณ„์ •๋ช…',                          
        'PASSWORD': 'DB ์ ‘์† ๋น„๋ฐ€๋ฒˆํ˜ธ',                  
        'HOST': '์‹ค์ œ DB ์ฃผ์†Œ',                     
        'PORT': '3306',         # ๊ธฐ๋ณธ ํฌํŠธ ์ฃผ์†Œ                  
    }
}

 

3. DB ๊ฐ์ง€

ํ•ด๋‹น DB์— ์กด์žฌํ•˜๋Š” ํ…Œ์ด๋ธ”๋“ค์„ model๋กœ ๋งŒ๋“ค์–ด์คŒ

# ์•ฑ ์•ˆ์— models.py์— ๋ฐ”๋กœ ์ €์žฅํ•˜๊ธฐ
python manage.py inspectdb > [์•ฑ์ด๋ฆ„]/models.py

# ์•ฑ ์•ˆ์— models.py์— ๋ฐ”๋กœ ์ €์žฅํ•˜๊ธฐ (๋ฉ€ํ‹ฐ DB)
python manage.py inspectdb --database 'db๋ช…' > [์•ฑ์ด๋ฆ„]/models.py

# ์ถœ๋ ฅ๋งŒ ํ•˜๊ธฐ
python manage.py inspectdb

 

 

4. ํ…Œ์ด๋ธ” ์ƒ์„ฑ

๋ชจ๋ธ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋‹ˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ ์šฉํ•˜๊ธฐ

python manage.py makemigrations
python manage.py migrate

 

Django ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์…‹์—…

๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š” SQLite๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • SQLite ์ง„์ž…
# db.sqlite3 ๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—์„œ
sqlite3 db.sqlite3

 

๋ชจ๋ธ ๋งŒ๋“ค๊ธฐ

๋ชจ๋ธ์ด๋ž€, ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ!

 

1. polls/models.py์—์„œ ๋ชจ๋ธ ์ž‘์„ฑ

Question๊ณผ Choice ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ ๋‹ค.

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

๋ชจ๋ธ ํ™œ์„ฑํ™”

๋ชจ๋ธ์„ ํ†ตํ•ด ์žฅ๊ณ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์„ ํ•œ๋‹ค.

  • ์ด ์•ฑ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์ƒ์„ฑ (CREATE TABLE statements)
  • Question์™€ Choice ๊ฐ์ฒด์— ๋Œ€ํ•œ ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ API ์ƒ์„ฑ

 

2. mysite/settings.py ์ˆ˜์ •

ํ”„๋กœ์ ํŠธ์— polls ์•ฑ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์•ผ ํ•œ๋‹ค.

INSTALLED_APPS์— PollsConfig ํด๋ž˜์Šค ์ถ”๊ฐ€

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ƒ์„ฑ

๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์žฅ๊ณ ์— ์•Œ๋ฆฌ๋Š” ๊ฒƒ

python manage.py makemigrations

๐Ÿ’ก ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด๋ž€? Migrations

์žฅ๊ณ ์—์„œ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ์ „ํŒŒํ•˜๋Š” ๋ฐฉ๋ฒ•

์žฅ๊ณ ๋Š” ORM์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ DB ์Šคํ‚ค๋งˆ๋ฅผ git์ฒ˜๋Ÿผ ๋ฒ„์ „ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

ํ•˜๋‚˜์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒŒ์ผ์€ ํ•ด๋‹น ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์ƒ์„ฑ๋œ ์‹œ์ ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง

 

4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ

๋ชจ๋ธ๊ณผ ๊ด€๋ จ๋œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

python manage.py migrate

 

๐Ÿง ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น๊ณผ ์ ์šฉํ•˜๋Š” ๋ช…๋ น์ด ๋ถ„๋ฆฌ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ปค๋ฐ‹ํ•˜๊ณ  ์•ฑ๊ณผ ํ•จ๊ป˜ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

 

โœ… ๊ณต์‹๋ฌธ์„œ

https://docs.djangoproject.com/en/4.1/

 

โฌ‡๏ธ Django ์„ค์น˜ ์ „์ด๋ผ๋ฉด ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•ด๋ณด์„ธ์š”!

 

๋งฅ(Mac)์—์„œ Django ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ• ๋ฐ ์„ค์น˜ํ•˜๊ธฐ

๊ฐœ๋ฐœํ™˜๊ฒฝ macbook pro (2019) macOS Monterey 12.6.2 python 3.9.6 django 4.1.6 python3 ์„ค์น˜ 1. ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ python3 --version 2. ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜ python ๊ณต์‹ ๋‹ค์šด๋กœ๋“œ (3.9.6์œผ๋กœ ์„ค์น˜ํ•จ) https://www.python.org/do

myminju.tistory.com

 

https://static.djangoproject.com/img/logos/django-logo-negative.1d528e2cb5fb.png

 

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • macbook pro (2019)
  • macOS Monterey 12.6.2
  • python 3.9.6
  • django 4.1.6

Writing your first Django app

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

django-admin startproject mysite

 

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ ํŒŒ์ผ ๋ชฉ๋ก

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • mysite/ : ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ ํด๋”, ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์ด๋ฉฐ ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
    • manage.py : ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ์ปค๋งจ๋“œ๋ผ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ - manage.py์— ๋Œ€ํ•œ ๋””ํ…Œ์ผ
    • ๋‚ด๋ถ€ mysite/ : ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์‹ค์ œ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋“ค์ด ์ €์žฅ๋จ
      • __init__.py : ํŒŒ์ด์ฌ์—๊ฒŒ ์ด ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋กœ ์ธ์‹ํ•˜๋„๋ก ํ•˜๋Š” ๋น„์–ด์žˆ๋Š” ํŒŒ์ผ
      • settings.py : ํ”„๋กœ์ ํŠธ์˜ setting๊ณผ configuration  - Django settings
      • ursl.py : ํ”„๋กœ์ ํŠธ์˜ url ์„ ์–ธ
      • asgi.py : ASGI ํ˜ธํ™˜ ์›น์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ
      • wsgi.py : WSGI ํ˜ธํ™˜ ์›น์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•œ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ

 

๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

python manage.py runserver
  • ์–ธ์ œ runserver๋ฅผ ํ•ด์•ผํ• ๊นŒ?
    ์ž๋™ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
    ์ฆ‰, ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ตณ์ด ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜, ํŒŒ์ผ ์ถ”๊ฐ€ ๋“ฑ์˜ ์ž‘์—…์€ ๊ฐœ๋ฐœ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.

์„ค๋ฌธ์กฐ์‚ฌ ์•ฑ ์ƒ์„ฑ

python manage.py startapp polls

๐Ÿ’ก ํ”„๋กœ์ ํŠธ vs ์•ฑ

  • ์•ฑ์€ ๋ธ”๋กœ๊ทธ ์‹œ์Šคํ…œ, ๊ณต๊ณต ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ์†Œ๊ทœ๋ชจ ํˆฌํ‘œ ์•ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
  • ํ”„๋กœ์ ํŠธ๋Š” ํŠน์ • ์›น ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ๊ตฌ์„ฑ ๋ฐ ์•ฑ์˜ ๋ชจ์Œ
  • ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ์•ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ , ์•ฑ์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

์•ฑ ์ƒ์„ฑ ํ›„ ํŒŒ์ผ ๋ชฉ๋ก

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

์ฒซ๋ฒˆ์งธ ๋ทฐ ๋„์šฐ๊ธฐ

1. polls/views.py์— ์•„๋ž˜ ์ฝ”๋“œ ์ถ”๊ฐ€

# polls/views.py
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

 

2. polls/urls.py์— URL ๋งคํ•‘

๋ทฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ด์™€ ์—ฐ๊ฒฐ๋œ URL์ด ์žˆ์–ด์•ผ ํ•˜๊ณ , ์ด๋ฅผ ์œ„ํ•ด URLConf๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

 

3. mysite/urls.py์—์„œ ๋ชจ๋“ˆ ๊ฐ€๋ฆฌํ‚ค๊ธฐ

์ตœ์ƒ์œ„ URLConf์—์„œ polls.urls ๋ชจ๋“ˆ์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ์„ค์ •ํ•œ๋‹ค.

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

๐Ÿ’ก include()

๋‹ค๋ฅธ URLConf๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ํ•จ

URL์ด ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ์ž˜๋ผ๋‚ด๊ณ  ๋‚จ์€ ๋ถ€๋ถ„์„ included URLConf๋กœ ๋ณด๋ƒ„

 

๐Ÿ’ก path()

ํ•„์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ : route, view

์„ ํƒ ํŒŒ๋ผ๋ฏธํ„ฐ : kwargs, name

 

4. http://localhost:8000/polls/ ์— ์ ‘์†ํ•˜์—ฌ ์—ฐ๊ฒฐ ํ™•์ธํ•˜๊ธฐ

index ๋ทฐ๊ฐ€ URLConf์— ์—ฐ๊ฒฐ๋˜์–ด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

https://i0.wp.com/hanamon.kr/wp-content/uploads/2021/05/django.jpeg?fit=1280%2C720&ssl=1

 

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • macbook pro (2019)
  • macOS Monterey 12.6.2
  • python 3.9.6
  • django 4.1.6

python3 ์„ค์น˜

1. ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ

python3 --version

 

2. ์„ค์น˜๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์„ค์น˜

  • python ๊ณต์‹ ๋‹ค์šด๋กœ๋“œ (3.9.6 ์„ค์น˜)
 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

  • python3 ๋ช…๋ น์–ด๋ฅผ python์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
    • vi ~/.zshrc ์‹คํ–‰ ํ›„ ํ•˜๋‹จ์— ์•„๋ž˜ ์ฝ”๋“œ ๊ธฐ์ž…
alias python="python3"
# Setting PATH for Python 3.9
export PATH="/Library/Frameworks/Python.framework/Version/3.9/bin:${PATH}"

 

๊ฐ€์ƒํ™˜๊ฒฝ ๊ตฌ์ถ•

1. virtualenvwrapper ์„ค์น˜

sudo pip install virtualenvwrapper

 

2.  ํ•˜๋‹จ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

 

3. ํ„ฐ๋ฏธ๋„์—์„œ source ~/.zshrc ์‹คํ–‰

 

4. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ

mkvirtualenv [๊ฐ€์ƒํ™˜๊ฒฝ๋ช…]

 

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

worknon [๊ฐ€์ƒํ™˜๊ฒฝ๋ช…]

 

๊ฐ€์ƒํ™˜๊ฒฝ ๋ช…๋ น์–ด ๋ชจ์Œ

  • ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
mkvirtualenv [๊ฐ€์ƒํ™˜๊ฒฝ๋ช…]
  • ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๊ฐ€์ƒํ™˜๊ฒฝ ๋ชฉ๋ก ํ™•์ธ
workon
  • ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
worknon [๊ฐ€์ƒํ™˜๊ฒฝ๋ช…]
  • ๊ฐ€์ƒํ™˜๊ฒฝ ๋น„ํ™œ์„ฑํ™”
deactivate
  • ๊ฐ€์ƒํ™˜๊ฒฝ ์ œ๊ฑฐ
rmvirtualenv [๊ฐ€์ƒํ™˜๊ฒฝ๋ช…]

 

์žฅ๊ณ  ์„ค์น˜

โ—๏ธ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์‹คํ–‰ํ•œ ์ƒํƒœ์—์„œ ํ•˜๋Š” ๊ฒƒ ์žŠ์ง€ ๋ง๊ธฐ โญ๏ธ

 

pip install django

 

  • ์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ (ํŒŒ์ด์ฌ์ด ์žฅ๊ณ  ๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ)
python -m django --version

 

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

  • ์ƒ์„ฑ
django-admin startproject [ํ”„๋กœ์ ํŠธ๋ช…]

 

  • settings.py์— Timezone ์„ค์ •
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'  # ํ•œ๊ตญ ์‹œ๊ฐ„ ์ ์šฉ 
USE_I18N = True
USE_TZ = False  # False ๋กœ ์„ค์ •ํ•ด์•ผ DB์— ๋ณ€๊ฒฝ ๋œ TIME_ZONE ์ด ๋ฐ˜์˜ ๋จ

 

์„œ๋ฒ„ ๊ตฌ๋™ ํ™•์ธ

cd [ํ”„๋กœ์ ํŠธ๋ช…]
python manage.py runserver

# python manage.py runserver [IP]:[port]

 

  • http://127.0.0.1:8000/ ์ ‘์†

์žฅ๊ณ  ๋กœ์ผ“์ด ์ž˜ ๋œจ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

+ Recent posts