Django静态文件版本

时间:2012-03-16 18:11:11

标签: python django static

如何在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)

2 个答案:

答案 0 :(得分:7)

django-compressordjango-pipeline等应用程序适用于这类内容。

答案 1 :(得分:0)

Django 1.7添加了ManifestStaticFilesStorage,其目的是通过在文件名后附加哈希将其作为collectstatic周期的一部分。默认情况下,它适用于所有文件类型。

如果要使用它,但要指定版本的文件类型,那么我写了an extension,该文件允许您按路径模式将文件列入白名单/黑名单。

从Django 2.2开始,此ManifestStaticFilesStorage仍然是推荐的方法。