我想在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)
当然,我实际想做的事情比向stdout写入一行更加复杂,但这是展示问题的最简单的示例。我覆盖run
而不是handle
或其他某个方法的原因是因为我需要在此代码运行时已经设置self.addr
。
当我运行./manage.py runserver
时,在服务器开始运行之前,“即将在127.0.0.1上开始运行”这行字出现了两次。为什么会发生这种情况,有什么解决办法吗?