Django FormView 에 kwargs 사용자변수 추가하기

가끔 초기화 할때, 내가 원하는 변수 값을 넘기고 싶을때 kwargs 에 넣어줘서 넘겨줄 수 있다.

코드를 일단 보자

class ProductUpdateView(BSModalUpdateView):
    model = Product
    template_name = "_modal_update.html"
    form_class = ProductUpdateForm
    success_message = "변경완료"
    # success_url = reverse_lazy('orderitem_list')
    def get_success_url(self):
        return self.request.META["HTTP_REFERER"]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        print("===여기 들어옴 ProductUpdateView ===", args, kwargs)

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs["request"] = self.request
        return kwargs

일단, get_form_kwargs(self) 함수가 있다는 사실이 중요하다.

여기에서 기본 값들을 받고, 사용자 변수를 추가하고 리턴해주면 사용자 값이 추가된 kwargs 를 넘길 수 있다.

사용되는 부부은 이런 곳이다.


class ProductUpdateForm(BSModalModelForm):
    title = ""

    class Meta:
        model = Product
        fields = ["company", "name"]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # print("=== ProductUpdateForm ===", args, kwargs, kwargs["request"])

__init__() 함수가 불려질때 넘어오게 되는 kwargs 에 내가 추가한 변수가 떡하니 들어 있다.

유용하게 활용하자.

![bird's eye view photography of trees and body of water](assets/images/2023/03/mawu2pojwfu.jpg?resize=1024%2C576&ssl=1)

참고페이지

https://ggodong.tistory.com/209 – Get, Post 요청을 모두 알아서 처리하는 FormView !

https://stackoverflow.com/questions/18605008/curious-about-get-form-kwargs-in-formview

Share: Twitter Facebook
Bongjun Hur's Picture

About Bongjun Hur

BJ is a dev.

Seoul, Korea https://devbj.com