Django 脚本组织的最佳实践

Posted

技术标签:

【中文标题】Django 脚本组织的最佳实践【英文标题】:Django best practice for scripts organizing 【发布时间】:2021-01-24 10:36:35 【问题描述】:

我在 Django 3.1 上的项目具有以下布局:

.
├── app
│   ├── app
│   │   ├── asgi.py
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── core
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── fixtures
│   │   │   ├── Client.json
│   │   │   └── DataFeed.json
│   │   ├── __init__.py
│   │   ├── migrations
│   │   │   ├── 0001_initial.py
│   │   │   ├── 0002_auto_20201009_0950.py
│   │   │   └── __init__.py
│   │   ├── models.py
│   │   └── tests
│   │       └── __init__.py
│   └── manage.py

我想在这个项目中添加 2 个脚本:

download_xml.py - 按计划从外部来源检查和下载 .xml 文件(每约 30 分钟一次) update_db_info.py - 由 download_xml.py 调用并将数据从下载的 xml 传输到数据库

为此类脚本组织展示位置的最佳 django 做法是什么?

我的想法

    只需在 app/core 中创建 scripts 文件夹并将脚本放在那里。使用 cron 调用它们 运行python manage.py startapp db_update 因此将创建 django 中的新应用程序。我将从其中删除迁移、视图、模型等并将脚本放在那里。再次使用 cron 创建 app/core/management/commands 文件夹并将脚本放在那里。使用python manage.py download_xml && python manage.py download_xml update_db_info通过cron调用它们

【问题讨论】:

【参考方案1】:

选项 3(大部分)

但是,如果 download_xml.py 不使用或不依赖 Django,我会将其放在 Django 项目之外的 scripts 目录中(但仍处于源代码控制中)。如果脚本确实需要与您的应用程序一起部署,您可能决定不这样做。不过,它不需要是管理命令。

update_db_info.py 听起来肯定最适合作为管理命令。

【讨论】:

以上是关于Django 脚本组织的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

组织大型 javascript 应用程序的工具和最佳实践

Web最佳实践阅读总结

如何组织导航栏下方的“标签”?最佳实践?

(Java)包组织有最佳实践吗? [关闭]

Liquibase:组织变更日志的最佳实践

在微服务架构中组织授权的最佳实践?