Django:启动devserver时执行一些代码

时间:2011-11-29 07:34:06

标签: django

我需要在devserver启动时执行一些代码。

目前我只是将代码放入models.py我的一个应用程序中。

此解决方案有副作用:代码在使用其他管理命令时执行,我想避免使用。

更新:这将是可分发应用程序的一部分。我不希望用户(实际上是开发人员)运行任何其他命令。他们应该只能使用runserver命令。我也不想用我自己的实现覆盖runserver命令。

已更新:我的models.py如下所示:

from django.conf import settings

if settings.DEBUG: # I actually use another setting here, but it does not matter
    run_my_code_in_a_daemon_thread()

我在这个文件中没有任何实际模型。因此,我的代码只执行一次:当Django从INSTALLED_APPS扫描所有应用程序并导入其models.py时。

2 个答案:

答案 0 :(得分:2)

自定义bash(python)启动器会很好。或者您可以自己编写management command

答案 1 :(得分:1)

您只需更新本地manage.py即可?检查传递的参数(您对runserver感兴趣,如果确实如此,请从那里执行您想要的代码。这样的事情:

if __name__ == "__main__":
    if sys.argv[1] == 'runserver':
        # Your custom code
    execute_manager(settings)