Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中编写可重用视图?_Python_Django_Views - Fatal编程技术网

Python 如何在django中编写可重用视图?

Python 如何在django中编写可重用视图?,python,django,views,Python,Django,Views,以下是我经常使用的使视图可重用的技术: 将模板名称作为默认参数 获取一个可选的额外上下文,默认为空{} 在呈现模板之前,使用额外的上下文更新上下文 为了进一步的可重用性,请在extra_context.values中调用任何可调用的 每当视图处理queryset时,都会有一个带有默认值的queryset参数 每当视图需要ORM中的特定对象时,它都会尝试以多种方式使用任何id参数获取它,例如作为slug,作为数据库id。这可能是一种不好的做法。。。 首先,我应该在列表中添加什么吗?我应该从列表中删

以下是我经常使用的使视图可重用的技术:

将模板名称作为默认参数 获取一个可选的额外上下文,默认为空{} 在呈现模板之前,使用额外的上下文更新上下文 为了进一步的可重用性,请在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。