例如,我想要一个页面,它可以让用户添加不同类别商品的数据。
喜欢:
模型:类别是项目的外键
Category1(detail url):
Item 1(detail url):
Date(textbox), Amount(textbox), Price(textbox)
Item 2:
...
Category2:
...
Save button, add more button, etc...
由于这是一个示例,因此我将这些内容全部显示在页面中。
我不介意用普通函数来编写它们,但我想知道我是否可以利用这些 View ,因为如果它们被如此大量地引入和开发,它们可能会很强大。那么为什么不利用它呢?
谁能告诉我如何使用它们的技巧,或者如果我们想要更多功能,我们就不应该使用它们?
最佳答案
Django 的通用 View 涵盖了许多常见用例。例如:
- CreateView - 用于创建模型实例的 View
- UpdateView - 用于更新模型现有实例的 View
- DeleteView - 用于删除模型现有实例的 View
- DetailView - 用于显示模型现有实例详细信息的 View
- ListView - 用于显示模型实例列表的 View
如果您需要的话,还有更多,它们涵盖了您可能需要的大部分 View 。您还可以轻松扩展它们以满足您的需求。作为一般经验法则,它们对构建某些东西的速度产生了巨大的影响,我建议默认使用它们,并且仅在绝对必要时才切换到编写自己的 View 。如果您还没有学习它们,我认为这样做将是您时间的一项非常好的投资 - 您将很快弥补花费的时间。对于许多 View 类型,只需指定模型、设置 URL 和模板即可完成。
如果您需要传递其他数据,则可以扩展相关通用 View 并重写 get_context_data()
方法。如果需要将相同的方法应用于多个不同的通用 View ,您可以创建一个包含该方法的 mixin 并将其包含在该通用 View 中。
对于包含表单的 View ,例如 CreateView 和 UpdateView,正如 Drewness 所说,您可以通过 ModelForm 实例来告诉它要使用什么表单,并且该表单本身可以被覆盖,因此您仍然拥有很多控制权关于表格的用途。例如,您可以定义以下形式:
from django.forms import ModelForm
class CategoryForm(ModelForm):
exclude = ['date_created']
以及以下 View
from django.views.generic.edit import CreateView
class CategoryCreateView(CreateView):
model = Category
form_class = CategoryForm
Django 教程 covers generic views pretty well .
关于python - 如何使用 django 通用 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506955/