저는 reverse 보다는 resolve_url 을 선호하는 편입니다.  resolve_u

 
Chinseok Lee

저는 reverse 보다는 resolve_url 을 선호하는 편입니다.

resolve_url 은 reverse 를 래핑하고 있구요. 모델 인스턴스를 넘겨 get_absolute_url 를 호출토록 할 수 있습니다.

from django.shortcuts import resolve_url

그리고 args, kwargs 처리를 해주기 때문에 코드가 좀 더 심플해집니다.

reverse(“blog:post_detail”, args=[post.pk])
resolve_url(“blog:post_detail”, post.pk)

한 번 써보세요. 🙂

https://github.com/django/django/blob/master/django/shortcuts.py#L118

  • 박영록

    만들어서 쓰고 있었는데, 이미 있었군요 ㅠㅠ

    Seungho Kim

    reverse 와 resolve_url 둘다 사용해본적이 없는데 어떤 상황에서 주로 사용하시나요?

    Donghyun Cho

    종종 코드에서 url을 사용해야하는데 reverse랑 resolve_url은 하드코드 대신 urls.py에 정의된 url을 가져와 사용이 가능합니다. 쉬운예로, view에서 redirect로 response를 보내는 경우가 있고요, API에서 POST로 리소스를 하나 생성한 경우 Location헤더에 생성된 객체의 url을 제공하는데도 사용합니다.

    Donghyun Cho

    템플릿에선 {% url ‘customer:detail’ customer.id %} 이렇게 사용해요.

    Shin Ilsuk

    진행하는 건이 있는데, 적용 해 봐야겠네요. 감사합니다.

Advertisements