使用带有导入的记忆,可以避免在数据库中查询不经常更改的变量

时间:2019-03-03 07:11:07

标签: python django python-3.x

在Django应用程序中,我具有以下结构:

app_name
 - const.py
 - models.py
 - forms.py
 - views.py

const.py中保留常数,并将import保留在其他3个文件中。

我有一些variables通常是从数据库(使用QuerySet)获得的,但是此变量的更改频率不是很高(几个月)。

我想将此变量作为常量添加到const中,并且仅在更改时(从admin起)更新此变量值。

我想这样做,因为每次调用models/forms/views时都要多做1-3个查询集。

如果我将它们添加到const中,则会在import的每个const.py上执行数据库查询集,因此在这种情况下,我只是将它们从views/models/forms移到了{{ 1}}。

所以我需要一种记忆,可以是跨文件/模块。

我知道如何进行基本记忆,但是它仅在模块内部有效。

1 个答案:

答案 0 :(得分:1)

第一个基本答案:

您可以在项目本身上使用-const.py并轻松导入

project_name
 app_name
 - models.py
 - forms.py
 - views.py
- const.py

更复杂的答案:

添加模型Constant并使用Redis的ID缓存此表,该表具有可用于缓存的最长ttl

由于许多原因,我不希望任何内容都基于文件

  1. 它们之间基于环境的差异。
  2. 开发人员一定级别的访问权限。
  3. 无需增加可能完全不需要的文件。

有关使用Redis进行缓存的更多信息,请在real python上查看