如何访问 __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/