在 Django 项目中声明附加数据和模块的最佳方式
Posted
技术标签:
【中文标题】在 Django 项目中声明附加数据和模块的最佳方式【英文标题】:Best way to declare additional data and modules in a Django project 【发布时间】:2021-12-19 22:10:51 【问题描述】:问题 #1
我正在寻找最佳实践,以便在 Django 项目中声明附加数据。想象一下,我需要在app1/models.py
中存储要使用的大量选项(我已经看到很多最佳实践不断在模型主体中声明这些选项)。在另一种情况下,想象一下我需要保留数十个配置数据才能在我的views.py
中使用它们。在函数/类中声明它们是否常见?
在我看来,有两种常用的方法可以做到这一点。 (甚至完全不推荐)
方法#1
我实际上可以将它们全部保存在我的 settings.py
文件中并通过导入来访问它们(例如 from django.conf import settings
)。
settings.py
:
...
NBA_TEAMS = (
("red", "Bulls"),
("yellow", "Lakers"),
...
)
方法#2
将它们全部保存在一个名为 data.py
的文件中,就在 settings.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']):
...
是否有针对这些问题的最佳做法?谢谢。
【问题讨论】:
【参考方案1】:根据我对这两个问题的建议,您应该创建一个 constants.py
和一个 utils.py
文件。
现在取决于您的用例,如果您想在项目中的多个应用程序中使用相同的常量,然后在 manage.py
旁边的根目录中定义它,或者如果常量特定于应用程序,则在特定的应用程序文件夹下创建它在views.py
文件旁边。
utils.py
也是如此,您应该在一个 utils.py 文件中定义所有实用程序函数/方法,并在项目中的所有应用程序中使用它。
【讨论】:
非常感谢。是否有任何官方参考宣布此解决方案?以上是关于在 Django 项目中声明附加数据和模块的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章
Django在多个项目之间共享相同用户模型和数据库的最佳方式
带有 3rd 方数据库的 Django Channels 和 Web Socket