在 jinja 中使用变量动态 CSS 加载
Dynamic CSS loading using variable in jinja
我有一个变量 UI_BRAND
,其值为 blue
我有以下代码:
{% if UI_BRAND != 'default' %}
<link rel="stylesheet" href="{{ url_for('static', filename='UI_BRAND-styles.css') }}">
{% endif %}
我需要 UI_BRAND-styles.css
来评估 blue-styles.css
。如果括号已经存在,我试过在里面使用 {{}}
,但我知道那是不允许的。
使用 UI_BRAND
的值动态加载此 CSS 文件的最佳方法是什么?
已更正并经过测试。以下结果在我的测试中 <link rel="stylesheet" href="/static/blue-styles.css">
。
<link rel="stylesheet" href="{{ url_for('static', filename='' ~ UI_BRAND ~ '-styles.css') }}">
如果我错了请纠正我,但这似乎是 f 弦的一个很好的用例。也许是这样的?
filename=f'{UI_BRAND}-styles.css'
这一行的问题:
<link rel="stylesheet" href="{{ url_for('static', filename='UI_BRAND-styles.css') }}">
你可以试试这个:
{% if UI_BRAND != 'default' %}
<style src="{{ UI_BRAND }}-styles.css"></style>
{% endif %}
希望它能解决您的问题。
N.B:
您可能需要在 {{ UI_BRAND }} 之前添加静态根,如下所示
<style src="static_root/{{ UI_BRAND }}-styles.css"></style>
Don Eitner 很接近。
<link rel="stylesheet" href="{{ url_for('static', filename=UI_BRAND ~ '-styles.css') }}">
jinja 中的串联涉及波浪号 (~
)。
因此 {"FOO": "a", "BAR": "b", "numbers": "1234" }
FOO ~ BAR
评估为“ab”
并且:
{{ numbers | join(BAR ~ FOO ~ "n" ~ FOO ~ "n" ~ FOO) }}
评估为“1banana2banana3banana4”
这是我验证此答案所依据的有用工具:https://cryptic-cliffs-32040.herokuapp.com/
在上一行分配文件名如何。我认为它也更容易阅读:
{% if UI_BRAND != 'default' %}
<% set style_filename = UI_BRAND + '-styles.css' %>
<link rel="stylesheet" href="{{ url_for('static', filename=style_filename) }}">
{% endif %}
或者您可以在变量和字符串的同一行中使用 +
。
<link rel="stylesheet" href="{{ url_for('static', filename=UI_BRAND + '-styles.css') }}">
我有一个变量 UI_BRAND
,其值为 blue
我有以下代码:
{% if UI_BRAND != 'default' %}
<link rel="stylesheet" href="{{ url_for('static', filename='UI_BRAND-styles.css') }}">
{% endif %}
我需要 UI_BRAND-styles.css
来评估 blue-styles.css
。如果括号已经存在,我试过在里面使用 {{}}
,但我知道那是不允许的。
使用 UI_BRAND
的值动态加载此 CSS 文件的最佳方法是什么?
已更正并经过测试。以下结果在我的测试中 <link rel="stylesheet" href="/static/blue-styles.css">
。
<link rel="stylesheet" href="{{ url_for('static', filename='' ~ UI_BRAND ~ '-styles.css') }}">
如果我错了请纠正我,但这似乎是 f 弦的一个很好的用例。也许是这样的?
filename=f'{UI_BRAND}-styles.css'
这一行的问题:
<link rel="stylesheet" href="{{ url_for('static', filename='UI_BRAND-styles.css') }}">
你可以试试这个:
{% if UI_BRAND != 'default' %}
<style src="{{ UI_BRAND }}-styles.css"></style>
{% endif %}
希望它能解决您的问题。
N.B:
您可能需要在 {{ UI_BRAND }} 之前添加静态根,如下所示
<style src="static_root/{{ UI_BRAND }}-styles.css"></style>
Don Eitner 很接近。
<link rel="stylesheet" href="{{ url_for('static', filename=UI_BRAND ~ '-styles.css') }}">
jinja 中的串联涉及波浪号 (~
)。
因此 {"FOO": "a", "BAR": "b", "numbers": "1234" }
FOO ~ BAR
评估为“ab”
并且:
{{ numbers | join(BAR ~ FOO ~ "n" ~ FOO ~ "n" ~ FOO) }}
评估为“1banana2banana3banana4”
这是我验证此答案所依据的有用工具:https://cryptic-cliffs-32040.herokuapp.com/
在上一行分配文件名如何。我认为它也更容易阅读:
{% if UI_BRAND != 'default' %}
<% set style_filename = UI_BRAND + '-styles.css' %>
<link rel="stylesheet" href="{{ url_for('static', filename=style_filename) }}">
{% endif %}
或者您可以在变量和字符串的同一行中使用 +
。
<link rel="stylesheet" href="{{ url_for('static', filename=UI_BRAND + '-styles.css') }}">