Django - 基于已安装的应用程序动态包含JS / CSS

时间:2013-08-08 12:44:54

标签: django django-templates django-staticfiles

是否有人知道根据您安装的应用调整模板中包含的JS / CSS资源的方法?

假设我们使用x在应用template.html中有一个基本功能,这需要在应用的静态文件中提供foo.js

我想要的是一种方式,即可以将y注册bar.js添加到template.html,这也可以提供一些高级功能。

理想情况下,这应该与功能级别相关联 - 因此我同时注册foo.jsbar.js以提供功能A,在我的模板中,我只是表明我想要所有A的静态内容。

1 个答案:

答案 0 :(得分:0)

您可以遵循django管理框架方法。在您的基本模板中有一个额外的样式和javascript部分。根据某些条件,您可以插入新文件。

例如:

在基本模板中定义这两个块

{% block extracss %}{% endblock %}
{% block extrajs %}{% endblock %}

如果您想根据某些条件添加js或css,可以在

中添加一个检查
    {% block extracss %}
       {% if new_app_installed %}
          # Insert your CSS
       {% else %} 
          # Default 
       {% endif %}
     {% endblock %}

您还可以检查您的插件应用是否已安装,并将此上下文变量从视图传递到模板。

from django.conf import settings

if "new_app" in settings.INSTALLED_APPS:
    is_new_app_installed = True