Django – UpdateView pk 없이 사용하기

목록으로 돌아가기

url 로 UpdateView 의 PK 값을 넘겨주는 방식이 일반적인데, 사용자 정보 같은 것을 넘겨줄 때 사용자에 대한 pk 값이 노출되는게 부담스럽다.

꼭 넘겨줘야 하나? 내꺼만 고치면 되는데…

이때는 내장 함수를 통해 자기가 로딩 되면서 가져오도록 하면 된다. 자기 객체를 불러오는 방식이다. 주인공은 바로,

get_object(self)

@method_decorator(login_required, name="dispatch")class profile_update_view(UpdateView):    model = Profile    # fields = "__all__"    fields = ["level", "phone"]    template_name = "profile.html"    def get_object(self):        print("profile_update_view get_object()", self.request.user)        return Profile.objects.get(user=self.request.user)        # return self.request.user    def get_success_url(self):        return self.request.META["HTTP_REFERER"]

쓸데없이 url 로 넘기지 않고 바로 자기가 호출될때 필요한 객체를 get_objct() 함수에서 가져와서 return 해주면 끝!

참고 페이지

[
Django: DetailView, UpdateView pk나 slug 없이 사용하기
CBV를 주로 사용하면서, 참 잘 만들었다고 감탄하고 있다. DetailView, UpdateView 등 pk나 slug가 기본으로 필요한 CBV를 사용할 때, pk나 slug 없이 특정 object를 전달하는 방법을 공유한다. get_object 에 직..
![](assets/images/2023/02/opengraph.png?ssl=1)
](https://seulcode.tistory.com/281)
author-profile
Written by bj