Python 如何在django中编写可重用视图?
以下是我经常使用的使视图可重用的技术: 将模板名称作为默认参数 获取一个可选的额外上下文,默认为空{} 在呈现模板之前,使用额外的上下文更新上下文 为了进一步的可重用性,请在extra_context.values中调用任何可调用的 每当视图处理queryset时,都会有一个带有默认值的queryset参数 每当视图需要ORM中的特定对象时,它都会尝试以多种方式使用任何id参数获取它,例如作为slug,作为数据库id。这可能是一种不好的做法。。。 首先,我应该在列表中添加什么吗?我应该从列表中删除任何内容吗 这些物品可容纳大量箱子。然而,每当一个应用程序以某种方式扩展另一个应用程序的模型时,例如添加一个字段或以某种方式更改行为,我最终会编写自己的视图,并且只重用该模型。这正常吗 编辑/部分回答我自己的问题: 信号:视图应该在启动时发出一个信号,在返回响应之前发出一个信号Python 如何在django中编写可重用视图?,python,django,views,Python,Django,Views,以下是我经常使用的使视图可重用的技术: 将模板名称作为默认参数 获取一个可选的额外上下文,默认为空{} 在呈现模板之前,使用额外的上下文更新上下文 为了进一步的可重用性,请在extra_context.values中调用任何可调用的 每当视图处理queryset时,都会有一个带有默认值的queryset参数 每当视图需要ORM中的特定对象时,它都会尝试以多种方式使用任何id参数获取它,例如作为slug,作为数据库id。这可能是一种不好的做法。。。 首先,我应该在列表中添加什么吗?我应该从列表中删
我认为做所有这些都会给你的urlconf带来很大的负担,让你的urlconf做好每件事。也许制作一个包含所有这些内容的函数,并将您的视图硬编码为该函数的美化包装器会更好 每当视图需要ORM中的特定对象时,它都会尝试以多种方式使用任何id参数获取它,例如作为slug,作为数据库id。这可能是一种不好的做法 所以。。。为什么不期望模型实例作为参数传入呢?还是从中获取元素0的查询集?然后,您可以将其与QuerySet案例相结合,并可能将其滚动到get_object_或_404中
我的建议是看看Django的泛型视图是如何编写的。他们在解决和你一样的问题。除了最后一部分之外,您似乎大部分都在这方面。如果我视图的所有参数都有良好的、合理的默认值,以说明常见的用例,这会给urlconf带来什么负担?关于通用视图的好主意,我将尝试一下。不希望模型实例作为参数的原因是它违反了MVC。urlconf必须从模型中提供对象,这是视图的工作,而不是urlconf。