Django can't find staticfiles with Debug=False and Allowed_Hosts

后端 未结 3 1270
陌清茗
陌清茗 2021-02-20 17:05

Hi all I\'m having trouble solving this issue: If I turn DEBUG to False, I can\'t run manage.py runserver:

CommandError: You must set settings.ALLOWED_HOSTS if D         


        
3条回答
  •  孤独总比滥情好
    2021-02-20 17:31

    In DEBUG mode, the Django development server handles serving static files for you. However, this is not best for production as it's much more inefficient than a true server. See here.

    Serving the files

    In addition to these configuration steps, you’ll also need to actually serve the static files.

    During development, if you use django.contrib.staticfiles, this will be done automatically by runserver when DEBUG is set to True (see django.contrib.staticfiles.views.serve()).

    This method is grossly inefficient and probably insecure, so it is unsuitable for production.

    See Deploying static files for proper strategies to serve static files in production environments.

    Check out here to learn out how to serve static files in production.

    EDIT: Adding the following to answer @alejoss question about viewing error pages with DEBUG=True.

    I added something like the following to my root urls.py file:

    if settings.DEBUG:
        urlpatterns += patterns(
            '',
            url(r'^400/$', TemplateView.as_view(template_name='400.html')),
            url(r'^403/$', TemplateView.as_view(template_name='403.html')),
            url(r'^404/$', 'django.views.defaults.page_not_found'),
            url(r'^500/$', 'django.views.defaults.server_error'),
        )
    

    You might need to alter a bit (i.e., the 400 and 403 pages may need to be edited if your template names are different). Basically, this lets you visit http://localhost/400 to see your 400 error page, http://localhost/403 to see your 403 error page, and so on.

提交回复
热议问题