【发布时间】:2014-07-21 21:25:57
【问题描述】:
我开发了一个基于类的视图来呈现您可以在下面看到的元素列表:
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) 不正确,但我不知道为什么..
【问题讨论】:
-
我不明白你为什么要这样做。如果你的列表视图处理了一些参数,你应该在那个视图中处理,而不是调用另一个。
-
我正在关注这篇文章的答案:stackoverflow.com/questions/15622354/…。从那以后我改变了主意,决定直接在视图中处理这些数据。
标签: django