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 脚本组织的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章