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

Web/๐ŸŒ› Django

Django ํŠœํ† ๋ฆฌ์–ผ (2)

์ฒซ ๋ฒˆ์งธ ์žฅ๊ณ  ์•ฑ ๋งŒ๋“ค๊ธฐ Part 1

 

์ด ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด, ๊ฐ„๋‹จํ•œ ์„ค๋ฌธ์กฐ์‚ฌ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

cmd ์ฐฝ์— ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ Django๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ์–ด๋–ค ๋ฒ„์ „์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

 

Django๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์ดˆ๊ธฐ ์„ค์ •์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Django project๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ,

์ด ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •, Django ์œ„ํ•œ ์˜ต์…˜๋“ค, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์„ค์ •๋“ค๊ณผ ๊ฐ™์€ Django ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ˆ˜๋งŽ์€ ์„ค์ •๋“ค์ด ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

cd ๋ช…๋ น์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ํ›„ ๋‹ค์Œ์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

django-admin startproject mysite

 

๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— mysite๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

mysite ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 


๊ฐœ๋ฐœ ์„œ๋ฒ„

 

mysite ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ›„

์ƒˆ๋กœ๋งŒ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

cd mysite
python manage.py runserver

 

 

Starting development server at http://127.0.0.1:8000/

 

์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

 


์žฅ๊ณ  ์„œ๋ฒ„ ์ ‘์†

์ด์ œ ์„œ๋ฒ„๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ, ์ž์‹ ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— http://127.0.0.1:8000/ ์„ ํ†ตํ•ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 


๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ

 

Django์—์„œ๋Š” ์•ฑ์˜ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์—๋งŒ ๋”์šฑ ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ ์ƒ์„ฑํ•œ mysite ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

python manage.py startapp polls

 

๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด polls๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ๊ธด๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์€ ํˆฌํ‘œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง‘์ด ๋˜์–ด์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

polls๋””๋ ‰๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํŽผ์ณ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

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

 


์ฒซ ๋ฒˆ์งธ ๋ทฐ ์ž‘์„ฑํ•˜๊ธฐ

 

์ฒซ ๋ฒˆ์งธ ๋ทฐ๋ฅผ ์ž‘์„ฑํ•ด๋ด…์‹œ๋‹ค. polls/view.py๋ฅผ ์—ด์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ํ•„์ž๋Š” Visual Studio Code ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

polls/view.py
------------------------------------------------------------------------------
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. its the polls index!!!")

 

Django์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ๋ทฐ์ž…๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ด์™€ ์—ฐ๊ฒฐ๋œ URL์ด ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ,

 

์ด๋ฅผ ์œ„ํ•ด URLconf๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

polls ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ URLconf๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด urls.py๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
 -> urls.py

 

urls.py๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

polls/urls.py
-----------------------------------------------------------------------

from django.urls import path

from . import views

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

 

 

mysite/mysite/urls.pyํŒŒ์ผ์ด polls.urls ๋ชจ๋“ˆ์„ ๋ฐ”๋ผ๋ณด๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

mysite/mysite/urls.py
----------------------------------------------------------------------------------
from django.contrib import admin
from django.urls import include, path

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

 

include() ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ URLconf๋“ค์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

 

Django๊ฐ€ ํ•จ์ˆ˜ include() ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด, URL์˜ ๊ทธ ์‹œ์ ๊นŒ์ง€ ์ผ์น˜ํ•˜๋Š” ๋ถ€๋ถ„์„ ์ž˜๋ผ๋‚ด๊ณ , ๋‚จ์€ ๋ฌธ์ž์—ด ๋ถ€๋ถ„์„ ํ›„์† ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด include ๋œ URLconf๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

include() ์— ์ˆจ์€ ์•„์ด๋””์–ด ๋•๋ถ„์— URL์„ ์‰ฝ๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

polls ์•ฑ์— ๊ทธ ์ž์ฒด์˜ URLconf(polls/urls.py)๊ฐ€ ์กด์žฌํ•˜๋Š” ํ•œ, "/polls/", ๋˜๋Š” "/fun_polls/", "/content/polls/"์™€ ๊ฐ™์€ ๊ฒฝ๋กœ, ๋˜๋Š” ๊ทธ ์–ด๋–ค ๋‹ค๋ฅธ root ๊ฒฝ๋กœ์— ์—ฐ๊ฒฐํ•˜๋”๋ผ๋„, ์•ฑ์€ ์—ฌ์ „ํžˆ ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 


๋ทฐ ์ž‘๋™ํ•ด๋ณด๊ธฐ

์ด์ œ index๋ทฐ๊ฐ€ URLconf์— ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

 

๋‹ค์Œ ๋ช…๋ น์„ ์ž…๋ ฅํ•ด ์„œ๋ฒ„๋ฅผ ๋™์ž‘์‹œํ‚ต๋‹ˆ๋‹ค.

 

python manage.py runserver

 

๋ช…๋ น์„ ์ž…๋ ฅ ํ›„ ๋ณธ์ธ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์—  http://127.0.0.1:8000/polls/ ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด index๋ทฐ์— ์ •์˜ํ•œ "Hello, world. its the polls index!!!" ๊ฐ€ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

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

Django ํ…œํ”Œ๋ฆฟ ์–ธ์–ด  (0) 2020.06.10
Django ํŠœํ† ๋ฆฌ์–ผ (4)  (0) 2020.06.10
Django ํŠœํ† ๋ฆฌ์–ผ (3)  (0) 2020.06.09
Django ํŠœํ† ๋ฆฌ์–ผ (1)  (0) 2020.06.09