2

我在一个项目中发现了以下代码,删除它会使测试失败:

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. 为什么会这样?

4

1 回答 1

2

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

如果您通过 运行服务器manage.py runserver则仅在DEBUG=True.

提供此功能是为了帮助处于开发模式的用户,不建议在生产中使用。

从上面的链接:

提供文件

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

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

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

有关在生产环境中提供静态文件的适当策略,请参阅部署静态文件

于 2015-12-15T17:48:27.350 回答