2010-11-14 02:41:55 +08:00
|
|
|
from django.conf import settings
|
|
|
|
from django.contrib.staticfiles.handlers import StaticFilesHandler
|
2017-06-02 01:23:48 +08:00
|
|
|
from django.core.management.commands.runserver import (
|
|
|
|
Command as RunserverCommand,
|
|
|
|
)
|
2010-11-14 02:41:55 +08:00
|
|
|
|
2013-11-03 04:12:09 +08:00
|
|
|
|
2012-04-09 05:13:32 +08:00
|
|
|
class Command(RunserverCommand):
|
2011-01-05 20:41:40 +08:00
|
|
|
help = "Starts a lightweight Web server for development and also serves static files."
|
2010-11-14 02:41:55 +08:00
|
|
|
|
2014-06-07 04:39:33 +08:00
|
|
|
def add_arguments(self, parser):
|
2017-01-21 21:13:44 +08:00
|
|
|
super().add_arguments(parser)
|
2016-03-29 06:33:29 +08:00
|
|
|
parser.add_argument(
|
2017-04-02 08:03:56 +08:00
|
|
|
'--nostatic', action="store_false", dest='use_static_handler',
|
2016-03-29 06:33:29 +08:00
|
|
|
help='Tells Django to NOT automatically serve static files at STATIC_URL.',
|
|
|
|
)
|
|
|
|
parser.add_argument(
|
2017-04-02 08:03:56 +08:00
|
|
|
'--insecure', action="store_true", dest='insecure_serving',
|
2016-03-29 06:33:29 +08:00
|
|
|
help='Allows serving static files even if DEBUG is False.',
|
|
|
|
)
|
2014-06-07 04:39:33 +08:00
|
|
|
|
2010-11-14 02:41:55 +08:00
|
|
|
def get_handler(self, *args, **options):
|
|
|
|
"""
|
2017-01-25 04:31:57 +08:00
|
|
|
Return the static files serving handler wrapping the default handler,
|
|
|
|
if static files should be served. Otherwise return the default handler.
|
2010-11-14 02:41:55 +08:00
|
|
|
"""
|
2017-01-21 21:13:44 +08:00
|
|
|
handler = super().get_handler(*args, **options)
|
2016-03-03 10:01:36 +08:00
|
|
|
use_static_handler = options['use_static_handler']
|
|
|
|
insecure_serving = options['insecure_serving']
|
2011-10-22 12:30:10 +08:00
|
|
|
if use_static_handler and (settings.DEBUG or insecure_serving):
|
|
|
|
return StaticFilesHandler(handler)
|
2010-11-14 02:41:55 +08:00
|
|
|
return handler
|