python - Jinja IF 语句不适用于脚本 html 标签
问题描述
我的 Flask 应用程序<head>
部分中有两行代码,我想对某些用户隐藏。我正在使用 if 语句来实现它,但它似乎不起作用。语法对我来说似乎很合适,页面加载没有任何错误。我尝试将两个脚本源放入不同的 if 语句中,并多次检查links
变量是否具有错误值,但都不是原因。
所以我假设<script>
放置在 Jinja 中的元素有一些限制,或者 if 语句在<body>
. ({{links}}
里面的变量<body>
写出'display'
值)。怎么做,或者在外面是不可能的<body>
?
{% extends 'layout.html' %}
<title>{% block title %}Title{% endblock %}</title>
{% if links == 'display' %}
{% block firebase1 %}<script src="https://www.gstatic.com/firebasejs/8.4.3/firebase-app.js"></script>{% endblock %}
{% block firebase2 %}<script src="https://www.gstatic.com/firebasejs/8.4.3/firebase-auth.js"></script>{% endblock %}
{% endif %}
{% block content %}
{% 块内容 %}
> #from my layout.html
>
> <!doctype html> <html lang="en">
> <head>
> <meta charset="utf-8">
> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
> <link href="/static/favicon.ico" rel="icon" type="image/x-icon"/>
> <title>{% block title %}Title{% endblock %}</title>
> {% block firebase1 %}{% endblock %}
> {% block firebase2 %}{% endblock %}
> </head>
解决方案
主模板中的任何块都没有引用父级 (layout.html) 中的任何块名称。没有地方可以从您的下部模板中插入内容。
如果您有以下内容layout.html
:
<!doctype html> <html lang="en">
<head>
{% block firebase %}{% endblock %}
然后,您可以使用条件来决定将哪些内容放入实际模板中的块中:
{% extends 'layout.html' %}
{% block firebase %}
{% if links == 'display' %}
<script src="https://www.gstatic.com/firebasejs/8.4.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.4.3/firebase-auth.js"></script>
{% endif %}
{% endblock %}
推荐阅读
- android - 如何在kotlin的viewpager类上调用overridependingtransition
- tensorflow - 如何将 resnet50 转换为 coreml 模型?
- apache-spark - 如何检查 Dataframe 中列之间的布尔条件
- java - org.apache.camel.ResolveEndpointFailedException:无法解析端点,原因是:org.apache.camel.Header 缺少元素值
- sql - 如何为同一行中的一组 EmpId 显示“值”[列]和“所有此类值的总和”[行方式]
- python - BBox 标签工具 - 未找到文件
- ios - 此 iPhone 6 运行 iOS 12.3.1 (16F203),此版本的 Xcode 可能不支持
- pip - 为什么 Pipenv 锁定失败?
- css - 动态查找SVG的路径
- python-3.x - Protobuf 和 Python:如何将消息添加到“可重复任何”字段?