Django:如何从上下文变量动态导入静态文件?

时间:2016-10-24 12:19:30

标签: python django

我的上下文中有一个名为THEME的变量。根据它的值,django应该从一个或另一个文件夹加载CSS文件。

这就是我如何定义我的上下文处理器以从设置文件中读取变量THEME

from django.conf import settings

def theme(request):
    return {'theme': getattr(settings, "THEME", None)}

我试图像这样动态构建css路径:

        {% with 'myapp/css/'|add:THEME|add:'.custom_theme.css' as image_static %}
          {% static image_static %}
        {% endwith %}

但是,我收到此错误:

VariableDoesNotExist at /foo/bar/

Failed lookup for key [THEME] in u"[{'False': False, 'None': None, 'True': True}, {}, {}, ...

我尝试另一种方式:

        {% with 'myapp/css/'|add:request.THEME|add:'.custom_theme.css' as image_static %}
          {% static image_static %}
        {% endwith %}

我收到了这个错误:

VariableDoesNotExist at /foo/bar/

Failed lookup for key [THEME] in u"<WSGIRequest: GET '/foo/bar/'>"

有关如何基于我的上下文变量的值动态构建CSS的加载静态路径的任何想法&#34; THEME&#34;?

1 个答案:

答案 0 :(得分:1)

你设置了上下文变量&#34; theme&#34; (小写):

def theme(request):
    return {'theme': getattr(settings, "THEME", None)}

但是你正在寻找变量&#34;主题&#34; (大写):

Failed lookup for key [THEME]

正如丹尼尔所建议的那样(即将做同样的事情):改为编写自己的模板标签。应该采取大约两三行...