我尝试实现一个继承 FormView 形式的类视图。我的问题是我需要将 request.user 添加到 ContactUploadForm 我尝试过:
ContactUploadForm(request.user) and ContactUploadForm(self.request.user)
但是,我如何获得请求?我不明白这些是如何运作的。
class ImportFromFile(FormView):
"""
Class view import that allows a user to upload a single file (CSV, Excel) of contacts to a group.
Inherits :FormView: - A view for displaying a form, and rendering a template response.
"""
template_name = 'contacts/import_file.html'
form_class = ContactUploadForm(request.user)
答案 0 :(得分:3)
类似的东西:
class ImportFromFile(FormView):
...
def get_form_kwargs(self):
kwargs = super(ImportFromFile, self).get_form_kwargs():
kwargs.update({
'user': self.request.user
...
})
# or if you want to set only user
# kwargs['user'] = self.request.user
return kwargs
...
更新: 您应该覆盖get_form_kwargs方法。
您还可以覆盖get_form:
def get_form(self, form_class):
kwargs = self.get_form_kwargs()
kwargs.update({
'user': self.request.user
...
})
# or if you want to set only user
# kwargs['user'] = self.request.user
return form_class(**kwargs)
但我认为重写get_form_kwargs更容易理解和简单,因为如果你覆盖get_form,你不需要知道父方法(封装)的实现。
答案 1 :(得分:1)
你也可以使用大括号mixins:
http://django-braces.readthedocs.org/en/latest/index.html#userformkwargsmixin
这样可以省去为每个需要访问用户信息的视图/表单重复内容的麻烦。
答案 2 :(得分:-1)
你不能在班级做到这一点。基于表单的视图定义了您可以覆盖的get_form
方法,您可以在其中以self.request
的形式访问请求。