Framework/Django

reverse, reverse_lazy

JM Lee 2023. 12. 16. 09:58
728x90

장고에서 두 함수는 모두 from django.urls import _하여 url을 생성하는 함수이다. 하지만 이름이 다르듯, 함수의 차이도 존재한다.

  • reverse() : 함수 호출 시 즉시 URL 생성
  • reverse_lazy() : URL이 필요한 시점까지 생성을 미루고 필요 시 생성, 지연평가(lazy evaluation)를 사용 

 * 지연 평가(Lazy Evaluation) : 특정 연산이 필요한 시점까지 실행을 연기하는 컴퓨터 프로그래밍의 패턴. 즉, 데이터나 연산의 평가를 가능한 최후 순간으로 미루는 것을 의미한다. 이는 성능 최적화, 자원 효율성, 그리고 필요한 경우에만 계산을 수행하는 효율적인 방법을 제공한다. 파이썬에서는 앞서 공부한 제너레이터가 예시이다.

 

장고에서 reverse_lazy 함수는 get_success_url  함수를 오버라이딩하여 동적으로 URL을 생성하게 하는 것이 대표적인 예시다.

from django.urls import reverse_lazy
from django.views.generic.edit import CreateView

class MyModelCreateView(CreateView):
    model = MyModel

    def get_success_url(self):
        if some_condition:
            return reverse_lazy('profile')
        else:
            return reverse_lazy('dashboard')

 

'Framework > Django' 카테고리의 다른 글

_meta  (1) 2023.12.17
ORM이란?  (0) 2023.12.16
DRF manage.py 해석  (0) 2023.10.31
DRF Serializer는 무엇이며, 어떤 기능을 수행합니까?  (0) 2023.10.11
RESTful API  (0) 2023.09.23