我在一个项目中找到以下代码并删除它会导致测试失败:
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
上工作正常,也不会在没有此行的情况下提供静态文件。为什么会这样?
答案 0 :(得分:2)
您需要为manage.py test
指定这些行的原因是因为提供静态文件不是默认的django行为。
如果您通过manage.py runserver
,static content is only served if DEBUG=True
运行服务器。
此功能用于在开发模式下帮助用户,不建议在生产中使用。
从上面的链接:
提供文件
除了这些配置步骤之外,您还需要实际提供静态文件。
在开发过程中,如果您使用
django.contrib.staticfiles
,当DEBUG
设置为True
时,这将由runserver自动完成(请参阅django.contrib.staticfiles.views.serve()
)。这种方法效率极低,可能不安全,因此不适合生产。
请参阅Deploying static files了解在生产环境中提供静态文件的正确策略。