I want to make the Django development server do something before it starts running. To do this, I created a new app, added it to the top of INSTALLED_APPS
, and then created a management/commands/runserver.py
file in the app with the following code:
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)
(The thing I actually want to do is more complicated than writing one line to stdout, of course, but this is the simplest example that demonstrates the problem. The reason I override run
, rather than handle
or some other method, is because I need self.addr
to already be set when this code runs.)
When I run ./manage.py runserver
, the line "About to start running on 127.0.0.1" appears not once, but twice before the server starts running. Why is this happening and what can be done about it?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…