TIL 9 | Django ๊ธฐ์ดˆ ๐Ÿ’ฌ

saneeeeeeee_Yaยท2021๋…„ 3์›” 23์ผ
0

๐Ÿ›ธ

๋ชฉ๋ก ๋ณด๊ธฐ
9/25
post-thumbnail


Python's Framework

https://docs.djangoproject.com/ko/3.1/

Django ์‹œ์ž‘ โœจ


Django ์„ค์น˜๐ŸŽˆ

$ python -m pip install Django

์„ค์น˜ ํ™•์ธ

$ python -m django --version

๊ฐ€์ƒํ™˜๊ฒฝ

๊ฐ ํ”„๋กœ์ ํŠธ์˜ ํ™˜๊ฒฝ์„ค์ •์— ๋Œ€ํ•ด ๋…๋ฆฝ์„ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์„ค์น˜ํ•œ๋‹ค

pip install virtualenv

๐Ÿ‘‡zsh: command not found: ์˜ค๋ฅ˜์‹œ

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

code ~/.zshrc 
export PATH=/ํ”„๋กœ๊ทธ๋žจ ๊ฒฝ๋กœ:$PATH

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

$ virtualenv myenv

django ๊ตฌ์กฐ


  • Model ๋ฐ์ดํ„ฐ ์ €์žฅ
  • View ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์คŒ
  • Control, Template ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ๊ณผ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜์—ฌ Model๊ณผ View ์—…๋ฐ์ดํŠธ

ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ๐Ÿƒโ€โ™‚๏ธ๐Ÿƒโ€โ™€๏ธ


$ django-admin startproject mysite

myenv/ 
  mysite/
      manage.py
      mysite/
          __init__.py
          settings.py
          urls.py
          asgi.py
          wsgi.py
  1. manage.py
$ python manage.py `๋ช…๋ น์–ด`

๐Ÿ“ฃ ๋ช…๋ น์–ด

  • startapp ์•ฑ ์ƒ์„ฑ
  • runserver ์„œ๋ฒ„ ์‹คํ–‰
  • createsuperuser ๊ด€๋ฆฌ์ž ์ƒ์„ฑ
  • makemigrations app app์˜ ๋ชจ๋ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ฒดํฌ
  • migrate ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ DB์— ๋ฐ˜์˜
  • shell ์‰˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธ
  • collectstatic static ํŒŒ์ผ์„ ํ•œ ๊ณณ์— ๋ชจ์Œ
  1. settings.py
    ํ”„๋กœ์ ํŠธ์˜ ํ™˜๊ฒฝ ๋ฐ ๊ตฌ์„ฑ์„ ์ €์žฅ
  • DeBug ๋””๋ฒ„๊ทธ ๋ชจ๋“œ(๊ธฐ๋ณธ์œผ๋กœ True๋กœ ์„ค์ •)
  • INSTALLED.APPS pip๋กœ ์„ค์น˜ํ•œ ์•ฑ ๋˜๋Š” ๋ณธ์ธ์ด ๋งŒ๋“  ์•ฑ์„ ์ถ”๊ฐ€
  • MIDDELWARE.CLASSES Request์™€ Response ์‚ฌ์ด์˜ ์ฃผ์š”๊ธฐ๋Šฅ ๋ ˆ์ด์–ด
  • TEMPLATES djang template ๊ด€๋ จ ์„ค์ •, ์‹ค์ œ view(html, ๋ณ€์ˆ˜)
  • DATABESE ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—”์ง„์˜ ์—ฐ๊ฒฐ์„ค์ •
    ๊ฐœ๋ฐœ ์„œ๋ฒ„์—์„œ๋Š” python๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์ž‘๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • STATIC_URL ์ •์  ํŒŒ์ผ์˜ URL(CSS,JS,image,etc)

App ๋งŒ๋“ค๊ธฐ ๐Ÿ”จ

$ python manage.py startapp myapp

myenv/ 
  mysite/
      manage.py
      mysite/
          __init__.py
          settings.py
          urls.py
          asgi.py
          wsgi.py
  myapp/
      __init__.py
      admin.py
      apps.py
      migrations/
          __init__.py
      models.py
      tests.py
      views.py

view ์ž‘์„ฑ

myapp/view.py

from django.http import HttpResponse

def index(request):
  return HttpResponse("Hello Django")

myapp/urls.py

from django.urls import path

from . import views

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

mysite/urls.py

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

urlpatterns = [
    path('myapp/', include('myapp.urls')),
#include๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ url์„ ๊ฐ€์ ธ์™€ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค
    path('admin/', admin.site.urls),
]

๐Ÿ‘‡html ํŒŒ์ผ์„ view.py๋กœ ํ•œ๋ฒˆ์— ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค

view.py

from django.shortcuts import render

def index(request):
    name = "name"
    return render(request, 'myapp/templates/index.html', {
        'name': name,
    }

DataBase ์ƒ์„ฑ

$ python manage.py makemigrate

๊ด€๋ฆฌ์ž ๋งŒ๋“ค๊ธฐ

$ python manage.py createsuperuser

๐Ÿ˜์ดˆ๊ธฐ ํ™”๋ฉด

๐Ÿ”—๊ด€๋ฆฌ์ž ๊ถŒํ•œ page

  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ 
  • ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ, ์ˆ˜์ •, ์ถ”๊ฐ€๋ฅผ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค

MODEL ๋งŒ๋“ค๊ธฐ

myapp/models.py

from django.db import models

class Model(models.Model):
  name = models.CharField(max_length=50) #๊ธ€์ž ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ
  title = models.CharField(max_length=50)
  contents = models.TextField() #๊ธ€์ž ์ˆ˜๊ฐ€ ์ œํ•œ์ด ์—†์„ ๋•Œ ์‚ฌ์šฉ
  url = models.URLField() #url์„ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉ
  email = models.EmailField() #email์„ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉ
  cdate = models.DateTimeField(auto_now_add=True) #๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ •์˜ ํ•  ๋•Œ ์‚ฌ์šฉ

MODEL ์ฐธ์กฐ
https://docs.djangoproject.com/en/2.0/ref/models/fields/#field-types

๊ด€๋ฆฌ์ž page๋กœ app ๋ณ€๊ฒฝ

myapp/admin.py

from django.contrib import admin
from .models import Model
# Register your models here.
admin.site.register(Model)

Template System

myapp/Templates/index.html

{% for Model in Model_list %}
<li>  
  <a href="/view">{{ Model.title }}</a> | {{ Model.name }} 
</li>
{% endfor %}

ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ ์ •์ ์ธ HTML์„ ๋™์ ์ธ Python์˜ ์–ธ์–ด๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค

App ๋“ฑ๋ก

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

Model์˜ DB ํ™œ์„ฑํ™”

$ python manage.py makemigrations myapp

๋ณ€๊ฒฝ์‚ฌํ•ญ DB์— ์ €์žฅ

$ python manage.py migrate

๊ฐœ๋ฐœ ์„œ๋ฒ„ ๋™์ž‘

$ python manage.py runserver

๋ช…๋ น์–ด ๋’ค์— ์›ํ•˜๋Š” ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

$ python manage.py runserver 8080


profile
๐Ÿœhttps://action2thefuture.github.io/๐Ÿœ

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