gpt4 book ai didi

django - ModelForm 中 __init__ 中的访问请求

转载 作者:行者123 更新时间:2023-12-01 02:00:09 25 4
gpt4 key购买 nike

如何访问 __init__ 中的请求形式?

forms.py

class MyForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(MyForm, self).__init__(*args, **kwargs)


def clean(self):
... access the request object via self.request ...

View .py
myform = MyForm(request.POST, request=request)

但是如果我使用基于类的 View 怎么办 FormView ?

最佳答案

如果您需要在您的 MyForm 中访问请求您可以覆盖 FormView.get_form_kwargs方法。

def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs.update({'request': self.request})
return kwargs

FormView source

class FormMixin(ContextMixin):
...
def get_form(self, form_class=None):
"""
Returns an instance of the form to be used in this view.
"""
if form_class is None:
form_class = self.get_form_class()
return form_class(**self.get_form_kwargs())

def get_form_kwargs(self):
"""
Returns the keyword arguments for instantiating the form.
"""
kwargs = {
'initial': self.get_initial(),
'prefix': self.get_prefix(),
}

if self.request.method in ('POST', 'PUT'):
kwargs.update({
'data': self.request.POST,
'files': self.request.FILES,
})
return kwargs
if form_class is None:
form_class = self.get_form_class()
return form_class(**self.get_form_kwargs())

关于django - ModelForm 中 __init__ 中的访问请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com