./manage.py测试不提供静态文件?

时间:2015-12-15 16:54:47

标签: python django-testing django-tests

我在一个项目中找到以下代码并删除它会导致测试失败:

if 'test' in sys.argv:
    urlpatterns += patterns('',
                            (r'^static/(?P<path>.*)$', 'django.views.static.serve',
                             {'document_root': os.path.join(settings.BASE_DIR, 'viewer/templates/static')}),
                            )

出于某种原因,./manage.py test即使在./manage.py runserver上工作正常,也不会在没有此行的情况下提供静态文件。为什么会这样?

1 个答案:

答案 0 :(得分:2)

您需要为manage.py test指定这些行的原因是因为提供静态文件不是默认的django行为。

如果您通过manage.py runserverstatic content is only served if DEBUG=True运行服务器。

此功能用于在开发模式下帮助用户,不建议在生产中使用。

从上面的链接:

  

提供文件

     

除了这些配置步骤之外,您还需要实际提供静态文件。

     

在开发过程中,如果您使用django.contrib.staticfiles,当DEBUG设置为True时,这将由runserver自动完成(请参阅django.contrib.staticfiles.views.serve())。

     

这种方法效率极低,可能不安全,因此不适合生产。

     

请参阅Deploying static files了解在生产环境中提供静态文件的正确策略。