在Django项目中声明附加数据和模块的最佳方式



问题#1

我正在寻找在Django项目中声明额外数据的最佳实践。想象一下,我需要存储一个巨大的选择列表,以便在app1/models.py中使用(我已经看到许多最佳实践不断在模型主体中声明这些选择(。在另一个场景中,假设我需要保留数十个配置数据,以便在views.py中使用它们。在函数/类中声明它们是否常见?

在我看来,有两种常见的方法可以做到这一点。(甚至根本不确定推荐(

方法#1

实际上,我可以将它们全部保存在settings.py文件中,并通过导入(如from django.conf import settings(来访问它们。

settings.py:

...
NBA_TEAMS = (
("red", "Bulls"),
("yellow", "Lakers"),
...
)

方法#2

将它们全部保存在settings.py旁边的一个名为data.py的文件中,并尝试在设置文件的末尾导入,如下所示。

settings.py

...
try:
from .data import NBA_TEAMS, ..
except:
pass

第2期

有没有在Django项目中创建模块的最佳实践?想象一下,我需要创建一个数据验证器函数,用于接收来自views.py中表单提交的字符串数据。我应该把这些类型的函数/验证器/生成器放在哪里?

views.py

from --- import validateUsername
def submission(request):
...
form = ContactForm(request.POST)
if validateUsername(form.cleaned_data['username']):
...

对于这些问题,有什么最佳实践吗?非常感谢。

根据我对这两个问题的建议,您应该创建一个constants.py和一个utils.py文件。

现在取决于您的用例,如果您想在项目中的多个应用程序中使用相同的常量,然后在manage.py旁边的根目录下定义它,或者如果这些常量是特定于应用程序的,则在views.py文件旁边的特定应用程序文件夹下创建它。

utils.py相同,您应该在一个utils.py文件中定义所有实用程序函数/方法,并在项目中的所有应用程序中使用它。

最新更新