Django: urls.py & views.py

박정환·2022년 6월 24일
1

Urls.py

urls.py에서는 클라이언트가 요청하는 url과 요청에 대응되는 함수를 urlpatterns에 정의할 수 있다. (urlspattern 이 아님에 주의!)


from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.first), # views 안의 first 함수를 실행 
    path('second/', views.second),
    path('products/', include('product.urls')), # product로 시작하는 모든 rul은 product 어플리케이션 안의 urls.py가 담당한다.
    path('boards/', include('board.urls')),
]
  • '127.0.0.1:8000'에 접속하면 view 파일 안의 first 함수를 실행시키겠다는 뜻이다.

include

위에서 include는 products로 시작하는 모든 url은 product 어플리케이션(디렉토리) 안의 urls.py 로 리다이렉션해서 거기서 관리하겠다는 의미를 실현하는 함수이다..

다음과 같이 django.urls에서 import 해야 한다.

from django.urls import include

이렇게 product어플리케이션의 urls.py 에서 정의된

urlpatterns = [
    path('', views.productList), 
]

에서 첫번째 path 안의 url,
127.0.0.1/product를 가리키게 된다.

include로써 어플리케이션(기능) 단위의 url 관리가 가능해진 것이다.

views.py

views.py 에서는 클라이언트에게 보여지는 부분을 담당한다.

뷰는 요청된 페이지의 내용에 대하여 HttpResponse 객체를 반환하거나, Http404 와 같은 예외를 발생시켜야 한다.

HttpResponse는 django.http 모듈 안의 클래스인데, string(bytestring), memoryview를 content로서 객체 안에 담아 클라이언트의 요청에 대한 response로 전달한다.

response = HttpResponse("Here is the text of the webpage")

코라에서 배운 render 함수는 위에서 다룬 response 객체를 첫번째 인수로 받고, 템플릿 이름과 context 딕셔너리 객체를 두 세번째(세번째는 옵션)으로 받는다.

render(request, product.html)

이는 어떤 웹페이지를 요청한 클랑이언트에게 product.html을 보내주는 역할을 한다.

이때 product.html 파일은 어플리케이션 디렉토리 안의 templates 디렉토리 안에 있어야 한다.(s가 있음에 주의!)

  • urls.py
    • url 매칭
      • urlpatterns
        • url과 함수를 매칭
    • include
      • 예제
  • views.py
    • render 함수
    • 함수 정의

0개의 댓글