[Django] views.py, urls.py

황인용·2020년 1월 27일
0

Django

목록 보기
4/13

views.py와 urls.py

views.py

  • Django에서의 뷰(View)는 다른 일반 MVC Framework에서 말하는 Controller와 비슷한 역할 을 한다.
  • 즉, View는 필요한 데이터를 모델(model)에서 가져와서 적절히 가공하여 웹페이지 결과를 만들도록 컨트롤하는 역할을 한다.
    (ex. Views.py에서 Front-End 에서 오는 HTTP Request를 입력 parameter로 받아들이고, HTTP Response를 return해주는 View를 만들수있다.)

urls.py

  • Django내에서 Web service를 제공하는데 url를 넘기기 전에 main페이지와 각 app들과 url를 mapping해주는 기능을 django ulrs.py에서 지원한다.
  • app들이 다양해지고 app하위에 또다른 기능들이 생기면 main urls.py에서 모든 url를 mapping하지 않고 하위 app urls.py에 각 기능에 대한 url를 위탁할 수 있다.

1. views.py 만들기

import json # json데이터를 처리하기 위해 import
from django.views import View # django.views에서 View 가져오기
from django.http  import JsonResponse # django.http에서 서버의 요청에 대한 응답을 Json으로 응답하기 위해 JsonResponse 가져오기


class MainView(View): # MainView Class Django에 내장되어 있는 class
    def get(self, request): # class View 에 내장된 get method 
            return JsonResponse({"message":"Hello World"}, status=200) # 요청받는 것에 대한 응답을 JsonResponse로 보냄
  • MainView 라는 클래스의 get methode가 request를 받아 JsonResponse를 "message":"Hello World"와 status code 200을 보낸다( 여기서 status code는 정상적인 통신일 때 200 code를 보낸다)

2. views.py와 urls.py 연결


from django.urls import path # django.urls에 path 가져오기
from main.views  import MainView # main.views 에서 MainView class 가져오기

urlpatterns = [
    path('', MainView.as_view()) # '': 경로가 ''일때, MainView class에 as_view()함수를 실행 => http method가 get인지 post인지 delete인지 update인지등을 판별하여 함수를 실행 
]
  • urlpatterns의 path함수는 url과 명령을 연결하는 역할을 한다.
  • path함수의 첫번째인자는 ''으로 root URL를 가르킨다.
  • path함수의 두번째인자는 views.py에서 정의한 MainView라는 클래스를 가르킨다.

3. runserver

  • 위와 같이 수정된 내용을 바탕으로 Server를 실행하여 http request를 요청하고 요청한 값을 response 받아본다
  • runserver는 manage.py가 있는 디렉토리에서 실행한다
(project) $ ls
sampleproject manage.py blog 
(project) python manage.py runserver
October 26, 2018 - 07:06:30
Django version 2.1.2, using settings 'sampleproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.  

4. Request & Response

Httpie

  • http request 테스트를 위해 httpie등 request프로그램으로 테스트를 실행한다
(project) $ http -v localhost:8000

GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: localhost:8000
User-Agent: HTTPie/0.9.8



HTTP/1.1 200 OK
Content-Length: 26
Content-Type: application/json
Date: Tue, 28 Jan 2020 04:16:38 GMT
Server: WSGIServer/0.2 CPython/3.7.5
X-Content-Type-Options: nosniff
X-Frame-Options: DENY

{
    "message": "Hello World"
}

http web

  • web 브라우저를 통해 url에 127.0.0.1:8000 으로 확인하면 다음과 같은 결과를 확인 할 수 있다.

profile
dev_pang의 pang.log

2개의 댓글

comment-user-thumbnail
2020년 4월 21일

안녕하세요.
파이썬 정리 깔끔해서 따라 하는 중인데
Views.py 파일은 어디에 있어야하죠?
account 폴더는 없으시던데 Ulrs.py 경로도 어딘지.. 자세히 부탁드립니다.

1개의 답글