Django : urls와 view 사용

Psj·2020년 11월 2일
1

Python

목록 보기
23/41

View들은 우리가 만든 앱 폴더내의 views.py라는 파일에 정의된다.
views.py내의 각 함수가 하나의 View를 정의한다.

def index(request)를 보면
이 함수는 입력으로 항상 request를 받아들이고

return HttpResponse("Hello, world. You're at the polls index.") 를 보아
"Hello, world. You're at the polls index." 이라는 HTML 텍스트를 포함한 HttpResponse()객체를 리턴하고 있는 것을 볼수있다.

뷰를 호출하려면 기본적으로 생성되는 root urls.py와
새로만든 앱에 이와 연결된 urls.py 이 있어야 하는데 새로 생성한 앱에는 urls.py가 없으므로 이것을 새로 생성해야한다.
이것이 URLconf 이다.

(처음 앱폴더를 만들면 앱폴더내에 내가 만든 앱폴더와 똑같은 앱폴더가 하나더 있는데 이 안에 기본적으로 urls.py 가 설치되어있다.
이것을 root(메인) urls.py라고 한다.)

새로 만든 앱폴더인 polls폴더내에 urls.py를 새로 생성했다
새로 생성한 urls.py내에는 아무내용도 적혀 있지 않으므로 위 사진과같이 내용을 작성한다

현재 생성한 urlpatterns내의 내용을 보면
path('', views.index, name='index')라고 적혀있는것을 볼 수있다.
path(route, view, kwargs=None, name=None) 여기에 내용을 지정해 준것이다.

앞의 두개의 파라미터는 반드시 정해주어야하고, 뒤의 두개의 파라미터는 옵션이다.

첫번째 파라미터는 URLroute에서 사용된 경로를 지정하는것이고,
두번째 파라미터는 해당 URL에 상응하는 View를 지정하는 것이다.
두번째 파라미터는 위 이미지의 경우 views.함수이름 으로 표현했다
(클래스를 기반으로한 view의 경우에는 클래스명.as_view() 로 표현한다)

세번째 파라미터는 딕셔너리형식의 아큐먼트를 옵션으로 지정할수 있으며
네번째 파라미터는 path의 이름을 지정하는것이다

위 이미지는 첫번째 파라미터가 '' 로 되어있는데 이것은 클라이언트가 디폴트, 즉 기본 웹페이지를 요구했을때를 말하고 기본웹페이지를 요구했을때 views.py 파일의 index 함수를 호출하도록 표현한것이다.


root(메인) urls.py로 가서 위와 같이 작성한다.

이 메인urls.py에 include를 import하고
urlpatterns = [] 내에 요청받을 주소 뒷부분을 만들어주고(예시로 보면 'polls/')
include('polls.urls')로 urls 이동할 파일경로를 지정해준다.
include를 이용하면 매번 공통되는 앞부분의 경로에, 뒷부분에 앱의 경로만 갖다붙여서 빠르게 이동을 할수 있게 해준다.

예시를 이용해 처음부터 순서를 정리

1. (먼저 python manage.py runserver로 서버를 연다)
2. http://127.0.0.1:8000/ 이것이 공통되는 주소이고 여기에
3. http://127.0.0.1:8000/polls/ 이렇게 뒤에 polls/ 를 붙이면
4. mysite/mysite/urls.py (메인(루트)urls.py)파일의
path('polls/', include('polls.urls')) 에서 앞 파라미터인 polls/의 경로를 인식하고 두번째 파라미터인 include('polls.urls') 이 인식하여
polls앱의 urls.py로 넘어가고
5. 넘어간 polls/urls.py 파일을 보면
urlpatterns = [ path('', views.index, name='index') ]
6. 첫번째 파라미터에 다른주소가 안적혀있고 ''이므로 다른주소로 이동안하고 지금 이 상태에서 바로 열릴준비가 되어있다는 것이고 두번째 파라미터를 보아 views.index 이므로 이 polls앱의 views.py의 index라는 함수를 열으라는 명령이 된다.
7.polls/views.py 파일의 index 함수를 보면 아래와같으므로

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

8. 최종적으로 주소창에 http://127.0.0.1:8000/polls/ 입력하면
Hello, world. You're at the polls index. 가 화면에 나오게된다.

profile
Software Developer

0개의 댓글