얼마 하지도 않았는데 오랜만에 보니까 헷갈려서 다시 복습해보는 url 연결하기.
hello_django project의 mydjango app을 생성했고, mydjango app의 views.py에는 index함수를 정의했다.
view는 웹브라우저에서 사용자에게 무언가를 보여주기 위한 기능이며, 이 index 함수는 무언가를 보여주는 역할을 한다.
hello jango 어쩌고저쩌고를 적어놨었다.
이 view의 index를 보여주기 위해서는 url을 연결해주어야 한다.
mydjango app의 urls.py에 views를 import해주고 views.py의 index함수를 적어준다.
mydjango app의 상위에 있는 우리 hello_django 프로젝트의 urls.py에는 mydjango app의 url을 연결하도록 적어준다.
이렇게하고 django runserver를 하면, default url 127.0.0.1:8000/ 에서 mydjango app을 통해 index 함수의 내용이 표시되는걸 볼 수 있다. url : http://127.0.0.1:8000/mydjango
근데 url 연결되어있다고 views의 등록된 모든 함수들이 표시가 되는것인가? 싶어서
왜냐하면 호출을 따로 안했으니까.
몇개 더 만들어보기로 했다.
views.py :
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request) :
return HttpResponse("Hello, world. You're at the polls index.!!!!")
def index2(request) :
return HttpResponse("Hello, world. You're at the polls index.!!!! 2")
def index3(request) :
return HttpResponse("Hello, world. You're at the polls index.!!!! 3")
mydjango의 urls.py :
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('', views.index2, name='index2'),
path('', views.index3, name='index3'),
]
이렇게 했더니 출력은 제일 윗줄에 있는 index하나만 나왔다.
index와 index2를 주석처리하면 index3이 나왔다.
HttpResponse 함수는 http의 request에 대한 응답이다.
내 웹브라우저가 http://127.0.0.1:8000/mydjango page를 request했고,
이 때 mydjango가 응답으로 "Hello, world. You're at the polls index.!!!!"를 줄 수 있도록 함수를 구현한 것이다.
내가 아직도 이해가 안가는 것은 urlpatterns 리스트에 view.index를 추가한 것인데,
아휴 독학하니까 이걸 뭘봐야되는지를 모르겠어.
웹브라우저의 요청이 왔을 때 django가 해당 app의 url을 호출하도록 url을 구성했으니 이해했고,
mydjango app에서는 views의 index를 어떤 기준으로 호출해가는 것인가.
의문은 일단 두고 다음 진행을 해보자. 하면서 풀릴 수도 있으니??
'개발Study > web' 카테고리의 다른 글
Django 관리자 (0) | 2020.10.25 |
---|---|
Python shell in django (0) | 2020.10.18 |
MVC pattern (0) | 2020.09.20 |
database in django (0) | 2020.09.13 |
django project (0) | 2020.09.09 |
댓글