一尘不染

Django启动代码放在哪里?

django

我想在服务器启动(开发和生产)时执行以下代码行:

from django.core import management
management.call_command('syncdb', interactive=False)

放入settings.py它不起作用,因为它需要先加载设置。

将它们放在视图中并从外部访问该视图也不起作用,因为有些中间件正在使用该数据库,并且这些中间件将失败并且不允许我访问该视图。

将它们放在中间件中是可行的,但是每次访问我的应用程序时都会调用它们。一种可能的解决方案可能是创建一个完成所有工作的中间件,然后将其从中间件中删除,MIDDLEWARE_CLASSES因此不再调用它。我可以在没有太多猴子补丁的情况下做到吗?


阅读 412

收藏
2020-03-26

共1个答案

一尘不染

写的中间件,这是否在__init__事后提高django.core.exceptions.MiddlewareNotUsed__init__,Django会删除它为所有请求:)。__init__是在启动时调用的,而不是在第一个请求时调用的,因此不会阻止你的第一个用户。

2020-03-26