首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wagtail:为Multisite中的每个应用程序设置一个专用的静态文件夹

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

Stack Overflow用户
提问于 2018-07-17 00:03:06
回答 1查看 243关注 0票数 0

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

settings.py:

代码语言:javascript
复制
INSTALLED_APPS = [
    'websites.sua_umn_edu',
    'admin_sua_umn_edu',
    ...
]

STATIC_URL = '/static/'

有没有办法动态设置STATIC_URL,让每个应用程序在自己的文件夹中查找静态目录?

EN

回答 1

Stack Overflow用户

发布于 2018-07-17 06:11:23

也许基于request.site创建路径的模板标记适合您的需要?我为每个站点的样式表创建了一个模板标记:

代码语言:javascript
复制
@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)
    }

网站/标签/stylesheet.html

代码语言:javascript
复制
{% load static %}

<link rel="stylesheet" href="{% static path %}">

此模板标记可在base.html中使用

代码语言:javascript
复制
{% stylesheet %}

也许样式表对你的网站来说太有限了,但是这个概念是可以推广的。下面是{% site_static '...' %}模板标记的伪代码。它查找当前站点并调用普通的静态模板标记。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51365934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档