python教程—Django启动代码应该放在哪里?-Python实用宝典

python教程—Django启动代码应该放在哪里?

我希望在服务器启动(开发和生产)时执行这些代码行:将其放入settings.py无法工作,因为它要求已经加载了设置。

我想让这些行代码执行服务器启动(开发和生产):

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

将它放在settings.py中不起作用,因为它需要已经加载了设置。

把它们放到一个视图中,然后从外部访问这个视图也不起作用,因为有一些中间件使用数据,它们会失败,不让我访问视图。

将它们放在中间件中可以工作,但是每次访问我的应用程序时都会调用它。一个可能的解决方案是创建一个中间件来完成所有的工作,然后从MIDDLEWARE_CLASSES中删除自己,这样就不会再调用它了。我可以不做太多的猴子修补吗?

回答

编写中间件,在_init__中执行此操作,然后引发django.core.exception。django将在所有请求中删除它:)。顺便说一下,在启动时调用了_init__,而不是在第一个请求时调用,所以它不会阻塞您的第一个用户。

有关于添加启动信号的讨论,但这不会很快可用(例如,一个主要问题是什么时候应该发送该信号)

相关票证:https://code.djangoproject.com/ticket/13024

Update: Django 1.7包含了对此的支持。(文档,通过票据链接)

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论