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 에 내가 추가한 변수가 떡하니 들어 있다.
유용하게 활용하자.
참고페이지
https://ggodong.tistory.com/209 – Get, Post 요청을 모두 알아서 처리하는 FormView !
https://stackoverflow.com/questions/18605008/curious-about-get-form-kwargs-in-formview