小编mig*_*ser的帖子

在哪里添加必须与数据库交互的 django 应用程序启动代码?

我有一些 django 代码,当我的应用程序加载到开发服务器中或作为 wsgi 工作人员时,需要运行一次。这段代码还需要写入数据库。在我的特定情况下,我不需要为许多管理命令(例如collectstatic或createsuperuser等)运行代码。

这个问题“Where to put Django Startups code?” 建议使用 AppConfig.ready 作为启动代码。

但是,ready 函数的文档明确警告不要与数据库交互:

尽管您可以如上所述访问模型类,但请避免在 read() 实现中与数据库交互。这包括执行查询的模型方法(save()、delete()、管理器方法等),以及通过 django.db.connection 的原始 SQL 查询。你的ready()方法将在每个管理命令启动期间运行。例如,即使测试数据库配置与生产设置分开,manage.py test 仍然会对生产数据库执行一些查询!

对于需要更新数据库的代码,是否应该使用一些稍后的启动挂钩?

该代码将我的服务器注册为第三方服务的 Webhook 端点,并将所需的连接信息存储在数据库中。如果尚未配置,我仅注册 Webhook。

django django-apps

6
推荐指数
1
解决办法
1336
查看次数

标签 统计

django ×1

django-apps ×1