๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Django

[Django] - App ๊ตฌ์ถ• ๋ฐ Routing

by o.ddong 2024. 8. 31.
๋ฐ˜์‘ํ˜•

1. Django ํ†ต์‹  Logic ๐Ÿ“•

  1. user์— ์˜ํ•ด ์ ‘์†์ด ๋œ๋‹ค๋ฉด project file์•ˆ์— ์žˆ๋Š” urls.py๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. project file ์•ˆ์—๋งŒ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌด๊ฑฐ์›Œ์ง€๋ฏ€๋กœ ๋ถ„์—…ํ™”๋ฅผ ์‹ค์‹œํ•ฉ๋‹ˆ๋‹ค.
  3. ๋จผ์ € project file์•ˆ์— ์žˆ๋Š” urls.py์— ๋“ค์–ด์˜ค๊ฒŒ ๋˜๊ณ , ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ app file ์•ˆ์— ์žˆ๋Š” urls.py๋กœ ๋ถ„์—…ํ™”ํ•ด์ฃผ๊ณ , urls.py์—์„œ๋Š” view file ์•ˆ์˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ถ„์—…ํ™”๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.
  4. Web service๋ฅผ ์ด์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ DB๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•˜๋Š”๋ฐ Django์•ˆ์˜ model์„ ์ด์šฉํ•ด DB์™€์˜ ํ†ต์‹ ์„ ๊ตฌ์ถ•ํ•ด์ฃผ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ flow๋กœ ํ†ต์‹ ํ•ด์ค๋‹ˆ๋‹ค.

2. Django App ์ด๋ž€? ๐Ÿ“™

Django App ์€ Django์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด ๋ถ„์—…ํ™” ํ•ด ๋†“๋Š”๋‹ค ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. App ์ƒ์„ฑ

App์„ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋‚˜ ๋Œ€ํ‘œ์ ์œผ๋กœ 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

1. django-admin startapp [App_name]
2. manage.py startapp [App_name]

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด [App_name]๋ช…์„ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด Django App์„ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค.


๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด [myapp]์ด๋ผ๋Š” ์„œ๋ธŒํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ทธ ์•ˆ์— Django App์— ํ•„์š”ํ•œ ๊ธฐ๋ณธ ํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


๋ฐ˜์‘ํ˜•

3. Routing ๐Ÿ“’

1. Project File Set

๐Ÿ“ƒ urls.py

  1. Project File ์•ˆ์˜ urls.py๋กœ ํ†ต์‹ ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. ์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ๋ฐ›์€ ์ •๋ณด๋ฅผ App File ๋‚ด์˜ urls.py๋กœ ๋ณด๋‚ด์ฃผ์–ด์•ผ ํ•˜๋‹ˆ App File์—๋„ urls.py๋ฅผ ๋ณต์‚ฌํ•ด์ค๋‹ˆ๋‹ค.
  3. Project File์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์„ค๋ช…์„ ํ†ตํ•ด App File/urls.py๋กœ ์ „๋‹ฌํ•ด์ค๋‹ˆ๋‹ค.

Including another URLconf

  • Import the include() function: from django.urls import include, path
  • Add a URL to urlpatterns: path('blog/', include('blog.urls'))
# Project File
# Project File -> App File๋ช…/urls๋กœ ์ „๋‹ฌ

from django.urls import path, include

urlpatterns = [
    path('', include('myapp.urls')),
]

2. App File Set

๐Ÿ“ƒ urls.py

  1. App File/urls.py์—์„œ๋Š” ๋ฐ›์€ ์ •๋ณด๋ฅผ view File๋‚ด์˜ ํ•จ์ˆ˜๋“ค๋กœ ๋ถ„์—…ํ™”๋ฅผ ์‹œ์ผœ์•ผ ํ•จ์œผ๋กœ ์œ„์™€ ๋™์ผํ•œ ์ž‘์—…์„ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
# App File
# App File -> view File/function๋กœ ์ „๋‹ฌ

# 1. '127.0.0.1:8000' ๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒฝ์šฐ
# 2. '127.0.0.1:8000/create' ๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒฝ์šฐ
# 3. '127.0.0.1:8000/read/'์ˆซ์ž'' ๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒฝ์šฐ

from django.urls import path
from myapp import views

urlpatterns = [
    path('', views.basic),
    path('create', views.create),
    path('read/<id>/', views.read), 
]
  • ์ž…๋ ฅ ๋ฐฉ๋ฒ•: path('[๊ฒฝ๋กœ๋ช…]', views.[ํ•จ์ˆ˜๋ช…(๊ฒฝ๋กœ๋ช…)])
  • ๊ฐ™์€ ๊ฒฝ๋กœ์— ์žˆ๋Š” views file์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋ฏ€๋กœ import ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    from myapp import views
  • path('read/<id>/', views.read)์™€ ๊ฐ™์ด ๋‹ฌ๋ผ์ง€๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์‹ถ๋‹ค๋ฉด <id>์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“ƒ views

  1. ๋งˆ์ง€๋ง‰ ์ž‘์—…์œผ๋กœ view File ๋‚ด์— ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒฝ๋กœ์˜ path๋ฅผ ํ•จ์ˆ˜๋กœ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค.
from django.shortcuts import render, HttpResponse

# Create your views here.

def basic(response):
    return HttpResponse('hello world')

def create(response):
    return HttpResponse('Welcome')

def read(response, id):
    return HttpResponse('read' + id)

์œ„์˜ 4๋ฒˆ ์ž‘์—…์—์„œ <id>๋ผ๊ณ  ์ž…๋ ฅ๋ฐ›์€ ๋ถ€๋ถ„์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ž…๋ ฅ๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


4. ์ •๋ฆฌ ๐Ÿ“š

๋‚ด ํŒŒ์ผ๋ช…

  • Project File Name = myproject
  • App File name = myapp
  1. myproject/urls ๋กœ user ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ฐ›์Œ
  2. 1๋ฒˆ์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ myapp/urls๋กœ ์ „๋‹ฌ
  3. 2๋ฒˆ์œผ๋กœ ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ™์€ ๊ฒฝ๋กœ์— ์žˆ๋Š” views.[ํ•จ์ˆ˜๋ช…]์„ ์‚ฌ์šฉํ•ด ๋ถ„์—…ํ™” ํ•ด์ฃผ๋ฉด ๋ !


์ฐธ๊ณ  ์ž๋ฃŒ ๐Ÿ“ฉ

 

 

[Django] - virtual env

virtualenvvirtualenv๋Š” ๊ฐ€์ƒ์˜ ํŒŒ์ด์ฌ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ด๋‹ค. ์ฐธ๊ณ ๋กœ ์ œ ํ™˜๊ฒฝ์€ window์ž…๋‹ˆ๋‹น !!1. pip๋กœ virtualenv ์„ค์น˜>>> pip install virtualenv2. ํ”„๋กœ์ ํŠธ์— ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ>>> virtualenv myvenv3. ๊ฐ€์ƒํ™˜๊ฒฝ

o-ddong.tistory.com

 

 

 

[Django] - CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„

1. CRUD ๐Ÿ“•Django๋Š” MVT(Model View Template) ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ CRUD(Create, Retrieve, Update, Delete) ์ž‘์—…์„ ์ค‘์‹ฌ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.Create : DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•จRead : DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ดUpdate : DB์˜ ํŠน์ • ๋ฐ

o-ddong.tistory.com

 

๋ฐ˜์‘ํ˜•

'Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Django] - Model Inheritance  (0) 2024.09.07
[DRF] - Authentication  (1) 2024.09.07
[Django] - virtual env  (0) 2024.08.31
[Django] - CRUD ๊ธฐ๋Šฅ ๊ตฌํ˜„  (0) 2024.08.31
[Django] - ๊ธฐ๋ณธ ์„ค์ •  (0) 2024.08.31