brunch

매거진 백엔드

You can make anything
by writing

C.S.Lewis

by 내가 사는 세상 Dec 27. 2023

Django - Url

urls.py

목차

1. 고객이 요청할(request가 들어올) 때, urls.py에서 어떻게 인자를 받는가

2. urls.py에서 view를 실행할 때, FBV & CBV 차이점

3. urls.py 관련 자주 사용되는 장고 내장 함수들




1. 고객이 요청할(request가 들어올) 때, 

urls.py에서 어떻게 인자를 받는가


// urls.py

from django.conf.urls import url

from . import views


urlpatterns = [

    path('example/<int:pk>/', views.example_view, name='example'),

    # re_path(r'^example/(?P<value>\d+)/$', views.example_view, name='example'),

    path('example/<int:pk>/', ExampleView.as_view(), name='example'),

]


호출가능한 개체가 path()에 들어있다. 

views.example_view는 함수이므로 호출가능한 개체이다.

ExampleView.as_view()도 그 자체로 호출가능한 개체이다. '.as_view()'가 호출가능한 개체를 만든 뒤, 반환하기 때문이다.



url에서 설정한 값들은 view.py를 실행하는 과정에서 사용된다.


1번째 인자는 request 개체를 전달한다. 정확히는 HttpRequest 개체이다.

2번째 인자는 URL Captured Values이다. 말 그대로 url에서 얻어낸 값을 전달하는 것이다.


// views.py - FBV

from django.shortcuts import render

from django.http import HttpResponse


def example_view(request, value):

    return HttpResponse(f'Captured value: {value}')


// view.py - CBV

from django.http import HttpResponse

from django.views import View


class ExampleView(View):

    def get(self, request, value):

        return HttpResponse(f'Captured value: {value}')




2. urls.py에서 view를 실행할 때, FBV & CBV 차이점


from django.urls import path

from .views import DashboardView, dashboard


urlpatterns = [

    path('fbv/', action, name='fbv'),

    path('cbv/', Action.as_view(), name='cbv'),

]


FBV : () 없음 :  함수가 직접 호출 가능하므로 ()가 없이 사용

CBV : () 있음 : as_view()로 인스턴스를 생성하고, 메서드를 호출하여 뷰 함수를 만듦




3. 자주 사용되는 장고 내장 함수들


from django.urls import reverse_lazy


reverse_lazy() : 선언할 때 사용

keyword
매거진의 이전글 Django - View
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari