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

big*_*ind 5 django static-files

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

ben*_*rew 5

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

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)
Run Code Online (Sandbox Code Playgroud)


Nik*_*fin 3

ben432rew的答案很接近,但必须调用superurl不是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)
Run Code Online (Sandbox Code Playgroud)