在 Django 中存储常量的最佳方式
The best way to store constants in Django
我有一个 Django 应用程序并使用 GitHub 作为 CI。
现在我 运行 遇到每次合并时都会与常量导入发生合并冲突的问题。另一个开发人员导入的常量经常变化,我也是。
目录树如下所示:
main_app >
...main_app
...api
...aws_lambda
...billing
...utils
...and many other directories
每个子应用程序都有自己的文件constants.py。常量导入看起来像这样:
from utils.constants import const1, const2, const3, const4
from billing.constants import const5, const6
我需要如何重写这些导入以减少将来的合并冲突?
有没有比下面的更好的方法?
import utils.constants as utils_const
import billing.constants as billing_const
...
var = utils_const.const1
在 Django 应用程序中存储常量的最佳做法是什么?
对于只会被一个模块使用的常量,只需在该模块中定义它们即可。对于整个项目使用的常量,惯例是将它们添加到您的设置文件中。对于整个单个应用程序中使用的常量,我认为每个应用程序有一个 constants.py 的方法很好。
如果某些应用程序在不同的 django 项目中共享,则设置中的存储常量存在问题。
在这种情况下,从我的角度来看,建议添加一个常量应用程序。此外,您还将在配置方面受益于 django admin
您也可以将它们放在应用程序的 __init__.py
中,这样就少了一个阅读文件!
然后用作:
# Many constants:
import utils
print(utils.const2, utils.const3, utils.const4)
# Single constant (as the code base grows, this may become tiresome)
from billing import const1
print(const1)
您也可以将它们放在 apps.py
中,因为无论如何也会加载该文件,并且在语义上它用于配置应用程序。
我有一个 Django 应用程序并使用 GitHub 作为 CI。 现在我 运行 遇到每次合并时都会与常量导入发生合并冲突的问题。另一个开发人员导入的常量经常变化,我也是。 目录树如下所示:
main_app >
...main_app
...api
...aws_lambda
...billing
...utils
...and many other directories
每个子应用程序都有自己的文件constants.py。常量导入看起来像这样:
from utils.constants import const1, const2, const3, const4
from billing.constants import const5, const6
我需要如何重写这些导入以减少将来的合并冲突? 有没有比下面的更好的方法?
import utils.constants as utils_const
import billing.constants as billing_const
...
var = utils_const.const1
在 Django 应用程序中存储常量的最佳做法是什么?
对于只会被一个模块使用的常量,只需在该模块中定义它们即可。对于整个项目使用的常量,惯例是将它们添加到您的设置文件中。对于整个单个应用程序中使用的常量,我认为每个应用程序有一个 constants.py 的方法很好。
如果某些应用程序在不同的 django 项目中共享,则设置中的存储常量存在问题。
在这种情况下,从我的角度来看,建议添加一个常量应用程序。此外,您还将在配置方面受益于 django admin
您也可以将它们放在应用程序的 __init__.py
中,这样就少了一个阅读文件!
然后用作:
# Many constants:
import utils
print(utils.const2, utils.const3, utils.const4)
# Single constant (as the code base grows, this may become tiresome)
from billing import const1
print(const1)
您也可以将它们放在 apps.py
中,因为无论如何也会加载该文件,并且在语义上它用于配置应用程序。