python - 如何使用 django 通用 View ?

标签 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...

由于这是一个示例,因此我将这些内容全部显示在页面中。

我不介意用普通函数来编写它们,但我想知道我是否可以利用这些 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/

相关文章:

python - 在 Django Facebook 中注销?

Django 身份验证和加密 - 它是如何工作的?

python - 带有字母的 ASCII 艺术

javascript - 在引用父页面中的 anchor 的 iframe 内链接?

html - IF IE 条件语句不起作用

html - 如何在 HTML textarea 元素中强制使用单行?

python - Django 管理面板不起作用

python - 在写入后调用查找和/或读取操作时,Python 是否会自动刷新其缓冲区?

c# - 使用 Python.Net 自动化 Microsoft word

python - 列表理解/生成器中的海象赋值表达式