强制Django ManifestStaticFilesStorage始终返回带有哈希值

时间:2016-02-22 20:56:25

标签: django static-files

默认情况下,ManifestStaticFilesStorage仅在DEBUG=False时返回包含哈希值的网址。我希望我的开发环境尽可能接近生产环境,但我确实需要在开发过程中将debug设置为False。有没有办法告诉ManifestStaticFilesStorage总是给我一个哈希的网址?

3 个答案:

答案 0 :(得分:2)

您可以覆盖url的{​​{1}}方法,以便它始终为您提供带有哈希的网址。

ManifestStaticFilesStorage

答案 1 :(得分:2)

ben432rew的答案很接近,但super url来电namehashed_name而不是url是必不可少的除非您向生成具有该名称的变量的方法添加一些其他代码。此外,您的存储类super的最后一行从from django.contrib.staticfiles.storage import ManifestStaticFilesStorage from django.conf import settings class BigBlindManifestStaticFilesStorage(ManifestStaticFilesStorage): def url(self, name, force=True): """ Override .url to use hashed url in development """ return super(ManifestStaticFilesStorage, self).url(name, True) 返回值非常重要:

flexbox

答案 2 :(得分:1)

在Django票证#28847中,给出了ManifestStaticFilesStorage行为的原因,但它不考虑不是通过runserver命令而是通过本地进行开发的设置网络服务器实例(例如Apache oder Nginx)。 感谢ben432rew和Niko的回答!