如何在Django中控制静态文件的版本?我wrote custom templatetag将修改日期添加为文件URL的GET参数,但想知道 - 我是否正在做。
代码:
import os
from django import template
from django.conf import settings
register = template.Library()
@register.simple_tag
def sstatic(path):
'''
Returns absolute URL to static file with versioning.
'''
full_path = os.path.join(settings.STATIC_ROOT, path)
try:
# Get file modification time.
mtime = os.path.getmtime(full_path)
return '%s%s?%s' % (settings.STATIC_URL, path, mtime)
except OSError:
# Returns normal url if this file was not found in filesystem.
return '%s%s' % (settings.STATIC_URL, path)
答案 0 :(得分:7)
django-compressor和django-pipeline等应用程序适用于这类内容。
答案 1 :(得分:0)
Django 1.7添加了ManifestStaticFilesStorage,其目的是通过在文件名后附加哈希将其作为collectstatic
周期的一部分。默认情况下,它适用于所有文件类型。
如果要使用它,但要指定版本的文件类型,那么我写了an extension,该文件允许您按路径模式将文件列入白名单/黑名单。
从Django 2.2开始,此ManifestStaticFilesStorage仍然是推荐的方法。