我想要一个例外,如果django模板标签`static`呈现一个损坏的URL

时间:2016-01-29 18:01:48

标签: django django-templates

我想看一个异常,如果settings.DEBUG为true并且这样的行被模板引擎处理:

  <link rel="stylesheet" type="text/css" 
        href="{% static "foo/css/file-name-with-typo.css" %}">

static模板代码的文档:https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/#static

背景:异常会触发我们的连续集成系统失败,破坏可能无法生效。我不想在生产中运行生成断链的代码。

1 个答案:

答案 0 :(得分:2)

如果文件不存在,则覆盖url()方法以引发错误:

from django.core.files.storage import FileSystemStorage


class CustomFileSystemStorage(FileSystemStorage):
    def url(self, name):
        if not self.exists(name):
            raise ValueError('"%s" does not exist.' % name)
        return super(CustomFileSystemStorage, self).url(name)

在你的settings.py中:

DEFAULT_FILE_STORAGE = 'mymodule.CustomFileSystemStorage'