我正在使用Multisite来管理多个网站和一个Wagtail版本的自定义管理员。目前,我的静态文件夹设置如下:
settings.py:
INSTALLED_APPS = [
'websites.sua_umn_edu',
'admin_sua_umn_edu',
...
]
STATIC_URL = '/static/'
是否可以通过某种方式动态设置STATIC_URL
,所以每个应用程序都在自己的文件夹中查找静态目录?
答案 0 :(得分:1)
也许模板标签可以根据您的需求创建基于request.site
的路径?我为每个站点样式表创建了一个模板标签:
@register.inclusion_tag('website/tags/stylesheet.html', takes_context=True)
def stylesheet(context):
slug = slugify(context['request'].site)
return {
'path': '/css/{}/main.css'.format(slug)
}
website / tags / stylesheet.html
{% load static %}
<link rel="stylesheet" href="{% static path %}">
此模板标记可在您的base.html中使用
{% stylesheet %}
也许样式表对于您的网站来说太有限了,但是这个概念可以推广。这是{% site_static '...' %}
模板标记的伪代码。它会查找当前站点并调用普通的静态模板标记。
from django.templatetags.static import do_static
@register.tag('site_static', takes_context=True)
def site_static(context, parser, token)
site_slug = slugify(context['request'].site)
token = '{}/{}'.format(site_slug, token)
return do_static(parser, token)