[TIL_Carrotww] 17 - 22/09/22

์œ ํ˜•์„ยท2022๋…„ 9์›” 22์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
20/138
post-thumbnail

๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ Django

๐Ÿ” ๊ธฐ๋ณธ ์„ค์ • ํŒŒ์ผ ์ข…๋ฅ˜

  • settings.py -> ์žฅ๊ณ  ๊ธฐ๋ณธ ์„ค์ •์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
  • urls.py -> ์žฅ๊ณ  api ์ •๋ณด๋“ค์ด ๋“ค์–ด๊ฐ€๋Š” ํŒŒ์ผ์ด๋‹ค.
  • ์•„๋ž˜ ์ฝ”๋“œ๋Š” html ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ
from django.shortcuts import render

๐Ÿ’ก TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates') ํ•ด๊ฒฐ

๐Ÿ” ํ”Œ๋ผ์Šคํฌ์—์„œ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ฒฝ๋กœ๋ฅผ ์ž˜ ๋ชป ์จ์คฌ์„๋•Œ ๋งŒ๋‚ฌ๋˜ ์—๋Ÿฌ๋ผ ๋‚œ ์ฝ”๋“œ๊ฐ€ ํ‹€๋ฆฐ๊ณณ์ด ์žˆ๋Š”์ง€ ํ™•์ธ์„ 10๋ฒˆ์€ ๋”ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋‹ค.
์ฐพ์•„๋ณด๋‹ˆ settings ํŒŒ์ผ์—์„œ ์„ค์ •์„ ๊ฑด๋“œ๋ ค ์ฃผ์—ˆ์–ด์•ผ ํ–ˆ๋‹ค ใ… ใ… 
๊ฐ•์˜์— ๊ทธ๋Ÿฐ๋ง์€ ์—†์–ด์„œ ๊ทธ๋ƒฅ templates๋ฅผ ์•Œ์•„์„œ ์ฐพ์•„๊ฐ€๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ...
pycharm ์—์„œ ๋งŒ๋“ค์ง€ ์•Š๊ณ  vscode์—์„œ ๋ช…๋ น์–ด๋กœ Django ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ๋Ÿฐ๊ฐ‘๋‹ค... ์ƒ๊ฐ์ค‘์ด๋‹ค.

ํ•ด๊ฒฐ๋ฒ•

๐Ÿ” settings.py ํŒŒ์ผ์—์„œ

import os
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [TEMPLATE_DIR],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

templates ํด๋”๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„ ๋‚˜๋Š” ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค์–ด์คฌ๋Š”๋ฐ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค๋ฉด์„œ ์œ„ ์„ค์ •๋“ค๋„ ๋งŒ์ ธ์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค ใ…Ž

๐Ÿ’ก user app, tweet app ์ถ”๊ฐ€ํ•˜๊ธฐ

๐Ÿ” Django์—์„œ app ์€ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋กœ MVT
๋ชจ๋ธ์„ ๋…์ž์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋“ค์ด๋‹ค.

django-admin startapp user
djago-admin startapp tweet

๋งŒ์•ฝ ์œ„ ๋ช…๋ น์–ด๊ฐ€ ๋จน์งˆ ์•Š๋Š”๋‹ค๋ฉด pip install pipenv ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋ฐ›์•„์ฃผ์–ด์•ผ๋œ๋‹ค.
app ๋“ค์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉด settings.py ์—์„œ app ๋“ค์„ ์ถ”๊ฐ€ํ•ด ์ฃผ์–ด์•ผ ํ•จ

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    'tweet',
    'user',
]

์žฅ๊ณ ๋Š” ์ฐธ ์ด์ƒํ•œ๊ฒŒ ๋์—๋„ , (์ฝค๋งˆ)๋ฅผ ๋ถ™์—ฌ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š”๊ฒƒ์ด ์‹ ๊ธฐํ•˜๋‹ค.

๐Ÿงฒ Django ORM

๐Ÿ’ก ORM ์ด๋ž€?

๐Ÿ” Object Relational Mapping ์˜ ์ค„์ž„๋ง๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ
๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•œ๋‹ค.
๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋‘ ๋ชจ๋ธ์˜ ๋ถˆ์ผ์น˜๋ฅผ ORM์ด ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
SQL ์„ ๋ฐฐ์šธ๋•Œ ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ DB ์งˆ์˜๋ฅผ ํ•˜์˜€์—ˆ๋Š”๋ฐ ORM ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฟผ๋ฆฌ๋ฌธ์ด ์•„๋‹Œ ํ•ด๋‹น ์–ธ์–ด๋กœ (ex java, python) DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก DB ์—ฐ๋™

๐Ÿ” Django์— DB ์ƒ์„ฑ์„ ์•Œ๋ ค์คŒ

python manage.py makemigrations

๐Ÿ” Django์— DB ์ ์šฉ์„ ์š”์ฒญ

python manage.py migrate

0๊ฐœ์˜ ๋Œ“๊ธ€