我开发一个基于类的视图渲染元素的列表,你可以看到如下:基于Django的类视图调用的另一个
class ConfirmBeforeRunTest(LoginRequiredMixinRedirect,ListView):
template_name = "app_testing_house/confirm_before_run.html"
# Redirect to login page if not auth
redirect_unauthenticated_users = True
# Options for ListView
model = Test
context_object_name = 'test_list'
def get_queryset(self):
return Test.objects.filter()
def post(self, request, *args, **kwargs):
return TestToRunPostProcessorView.as_view(request)
正如你所看到的,我希望能够处理POST请求在我的视图中处理,以便为我的查询集获取一些参数。我曾经读过一篇博客说一个CBV =一个功能。所以我创建了另一种观点,处理所有的POST过程:
class TestToRunPostProcessorView(FormView):
form_class = TestToRunForm
def form_valid(self, form):
# Process form
return self.render_to_response(context)
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
遗憾的是它不工作,我得到了以下错误消息:
as_view() takes exactly 1 argument (2 given)
所以我认为return TestToRunPostProcessorView.as_view(request)
是不正确的,但我不知道为什么..
我不明白你为什么这样做。如果列表视图处理某些参数,则应在该视图中执行此操作,而不是通过调用另一个参数。 –
我正在关注这篇文章的答案:http://stackoverflow.com/questions/15622354/django-listview-with-post-method。从那以后,我改变主意,决定直接在视图中处理这些数据。 –