Python 如何利用django通用视图?
例如,我想要一个页面,它允许用户为不同类别的商品添加数据 比如: 型号:类别是项目的外键Python 如何利用django通用视图?,python,html,django,web,Python,Html,Django,Web,例如,我想要一个页面,它允许用户为不同类别的商品添加数据 比如: 型号:类别是项目的外键 Category1(detail url): Item 1(detail url): Date(textbox), Amount(textbox), Price(textbox) Item 2: ... Category2: ... Save button, add more button, etc... 因为这是一个例子,我知道这些东西都显示在一个页面中
Category1(detail url):
Item 1(detail url):
Date(textbox), Amount(textbox), Price(textbox)
Item 2:
...
Category2:
...
Save button, add more button, etc...
因为这是一个例子,我知道这些东西都显示在一个页面中
我不介意用普通函数编写它们,但我想知道是否可以利用这些视图,因为如果它们被大量引入和开发,它们可能会很强大。那么为什么不利用它呢
有人能告诉我如何使用它们的技巧吗?如果我们想要更多的功能,我们不应该使用它们。Django的通用视图涵盖了很多常见的用例。例如:
- CreateView-用于创建模型实例的视图
- UpdateView-用于更新模型的现有实例的视图
- DeleteView-用于删除模型的现有实例的视图
- DetailView-用于显示模型现有实例详细信息的视图
- ListView-用于显示模型实例列表的视图
get\u context\u data()
方法。如果需要将相同的方法应用于多个不同的泛型视图,则可以创建包含该方法的mixin,并将其包含在该泛型视图中
对于包含表单的视图,如CreateView和UpdateView,正如Drowness所说,您可以通过ModelForm实例告诉它要使用什么表单,并且表单本身可以被覆盖,因此您仍然可以控制表单的功能。例如,您可以定义以下表单:
from django.forms import ModelForm
class CategoryForm(ModelForm):
exclude = ['date_created']
以及以下观点
from django.views.generic.edit import CreateView
class CategoryCreateView(CreateView):
model = Category
form_class = CategoryForm
Django教程。您可以将Django的与
然后,模型中的所有字段都将在表单和表单视图中可用。你也应该看看。mixin允许您使用基于类的视图的组合
最后,如果您想在视图中使用多个表单(模型),可以使用。我读了这些文章,但可能还需要提示。就像在这个例子中,我们可以使用列表视图来列出所有类别,似乎我们也可以使用表单视图来填充数据,等等。我的意思是如何将这些视图组合在一起?继承?您所说的“将这些视图组合在一起”是什么意思?如果您指的是用于创建和编辑数据的视图,那么您可以做的是为该数据指定一个表单。您可以为视图创建一个表单并将其传递给通用视图,它将使用该表单。这个表单可以是一个ModelForm,它直接从model派生而来。我现在有点困惑。但我想我想到的是,ListView将获得一个对象列表,并传递给模板,然后呈现一个HttpResponse对象。而CreateView将获得一个对象,并呈现一个HttpResponse对象。我希望ListView的每个对象都有一个FormView,而我认为这两个进程是不兼容的,django将如何处理这些,这两个视图有两个例程,对吗?也许mixin会解决这个问题,我认为mixin是介于baseview和generic view之间的一个类。非常感谢您的努力。我想列出所有类别,对于每个类别,我想列出它的所有项目,每个项目都有一个表单来编辑它。