我有一个视图,它使用一个基于类的通用视图(源自django.views.generic.DetailView),带有自定义表单:
from django.views.generic import DetailView
class MyDetailView(DetailView):
model=MyModel
def get_object(self):
object = MyModel.objects.get(uuid=self.kwargs['uuid'])
def get_context_data(self, **kwargs):
form = MyForm
context = super(MyDetailView, self).get_context_data(**kwargs)
context['form'] = form
return context
我希望表单提交的POST转到与GET相同的URL。是否可以修改此视图代码,以便它也可以响应POST?如果是这样,怎么样?我是否需要从另一个mixin类继承?添加什么方法来处理表单数据的名称是什么?
或者,对于这种情况,在同一URL响应POST是一个坏主意吗?
(注意:表单不会修改正在显示的MyModel对象。而是用于创建不同类型的模型对象,因此UpdateView不太合适。)
答案 0 :(得分:9)
您对POST请求的要求并不十分清楚,但使用django.views.generic.UpdateView
代替DetailView
可能有意义 - 因为它还为您提供了一些处理表单处理的方法。
要将POST请求的处理添加到详细信息视图,post()
方法就足够了!
答案 1 :(得分:4)
查看Django代码,post()方法应如下所示:
def post(self, request, *args, **kwargs):
...