Wagtail:为Multisite中的每个应用程序设置一个专用的静态文件夹



我使用Multisite管理多个网站,并在Wagtail的单个构建上进行自定义管理。目前,我的静态文件夹设置如下:

settings.py:

INSTALLED_APPS = [
'websites.sua_umn_edu',
'admin_sua_umn_edu',
...
]
STATIC_URL = '/static/'

是否有某种方法可以动态设置STATIC_URL,以便每个应用程序在自己的文件夹中查找静态目录?

也许一个基于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)

最新更新