我想让 Django 开发服务器在它开始运行之前做一些事情。为此,我创建了一个新应用程序,将其添加到顶部INSTALLED_APPS
,然后management/commands/runserver.py
在应用程序中使用以下代码创建一个文件:
from django.contrib.staticfiles.management.commands.runserver import Command as RunserverCommand
class Command(RunserverCommand):
def run(self, *args, **options):
self.stdout.write('About to start running on ' + self.addr)
super(Command, self).run(*args, **options)
(当然,我实际上想做的事情比将一行写入标准输出更复杂,但这是演示问题的最简单示例。我覆盖run
而不是handle
其他方法的原因是因为我需要self.addr
已经在此代码运行时设置。)
当我运行./manage.py runserver
时,“About to start running on 127.0.0.1”这一行不是出现一次,而是在服务器开始运行之前出现两次。为什么会发生这种情况以及可以做些什么呢?