如果我根据自己的表单定义自己的视图,那么我可以将我的脆皮表单助手添加到Form类定义中。
但如果我使用django.views.generic
中的DetailView
,我就不是在创建表单,我甚至不需要forms.py
,DetailView
是为我做的。
在我的模板中,我正在被传递对象。
我无法理解如何访问Form来添加帮助程序并设置其属性,以及如何将正确的东西传递给我的模板,以便
{% crispy form %}
将起作用。
为了澄清,我正在尝试学习如何使用Django的基于类的通用视图。类似于DefaultView。我没有申报任何表格。我创建一个视图作为
from django.views.generic.detail import DetailView
class MyView(DetailView):
model=MyModel
并使用进行渲染
url(...... ,MyView.as_view()...)
我的模板接收一个作为对象的模型实例。当我没有形态的时候,我该如何将其与脆皮形态结合起来?
我知道如何创建自己的表单并在模板中使用crispy
,但我想使用通用CBV的DRY组合来避免编写不必要的表单,而不是为我做所有风格简洁的工作。
如果我创建了一个表单,那么我肯定会取代通用CBV所做的工作,我必须自己编写所有的响应处理。如果我理解正确的话,这就是使用泛型的训练。
您可以覆盖detailview中的"get_context_data"方法以包含表单。您应该考虑到DetailView是一个显示视图,所以表单在这里没有意义。无论如何:看看文档中的文章示例
你可以做一些类似的事情:
class MyDetailView(DetailView):
model = MyModel
def get_context_data(self, **kwargs):
context = super(MyDetailView, self).get_context_data(**kwargs)
context['form'] = MyForm()
return context
表单不会加载任何数据,因此您可以使用"initial"关键字
这是一项艰巨的工作,所以也许这不是适合这份工作的通用视图。。你想完成什么?