Django – resolve_url, reverse 코드 예제

modal 창을 띄워서 UpdateView, CreateView 를 처리하고 난 다음 success_url의 경우 호출한 detail 화면으로 보내는 것이 일반적이다.

그럼 detail url 을 success_url 로 리턴할 수 있어야 한다. get_success_url() 을 overriding 해준다.

간단하게 resolve_url() 함수를 쓰면, path parameter 도 같이 처리할 수 있다. 작성한 코드 조각을 남겨둔다.

urls.py 파일에는,

    path("orderitem/<int:pk>", orderitem_view, name="orderitem_view"),

이렇게 되어 있는 url 로 돌아가고 싶다고 가정하면, 아래 처럼 path parameter 를 주면 된다.

class OrderItemWorklineUpdateView(BSModalUpdateView):    model = OrderItem    template_name = "_modal_update.html"    form_class = OrderItemWorklineForm    success_message = "변경완료"    # success_url = reverse_lazy('orderitem_list')    def get_success_url(self):        print("OrderItemWorklineUpdateView get_success_url override", self.object)        redirect_url = resolve_url("orderitem_view", pk=self.object.id)        return redirect_url
  • self.object.id – UpdateView 의 넘겨진 object 는 self.object 에 이미 저장되어 있다.
  • resolve_url 리턴값은 스트링이다.

참고 페이지

아래 링크는 자세히 읽어 보는 게 좋다. reverse, redirect, resolve_url, get_absolute_url 용례가 잘 설명되어 있다.

[
URL Reverse, 아는 사람은 꼭 쓴다는 get_absolute_url() · 초보몽키의 개발공부로그
![](assets/images/2023/02/profile.png?ssl=1)
](https://wayhome25.github.io/django/2017/05/05/django-url-reverse/)
Share: Twitter Facebook
Bongjun Hur's Picture

About Bongjun Hur

BJ is a dev.

Seoul, Korea https://devbj.com