Jinja IF 语句不适用于脚本 html 标签



我在Flask应用程序的<head>部分中有两行代码,我想对一些用户隐藏这些代码。我正在使用if语句来实现它,但它似乎不起作用。语法对我来说似乎很合适,页面加载时没有任何错误。我试图将两个脚本源放入不同的if语句中,并多次检查links变量是否有错误的值,但都不是原因。

所以我假设<script>元素放在Jinja中,如果语句有一些限制,或者如果语句在<body>之外不起作用。(<body>内部的{{links}}变量写出'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 %}

最新更新