20

子ページからテンプレートにいくつかの変数を渡そうとしています。これは私のPythonコードです:

    if self.request.url.find("&try") == 1:
        isTrying = False
    else:
        isTrying = True

    page_values = {
        "trying": isTrying
    }

    page = jinja_environment.get_template("p/index.html")
    self.response.out.write(page.render(page_values))

テンプレート:

<html>
  <head>
    <link type="text/css" rel="stylesheet" href="/css/template.css"></link>
    <title>{{ title }} | SST QA</title>

    <script src="/js/jquery.min.js"></script>

  {% block head %}{% endblock head %}
  </head>
  <body>
    {% if not trying %}
    <script type="text/javascript">
    // Redirects user to maintainence page
    window.location.href = "construct"
    </script>
    {% endif %}

    {% block content %}{% endblock content %}
  </body>
</html>

と子供:

{% extends "/templates/template.html" %}
{% set title = "Welcome" %}
{% block head %}
{% endblock head %}
{% block content %}
{% endblock content %}

問題は、変数「trying」を親に渡したいのですが、これを行う方法はありますか?

前もって感謝します!

4

4 に答える 4

19

Jinja2のヒントとコツのページの例では、これを完全に説明しています。http ://jinja.pocoo.org/docs/templates/#base-template。基本的に、ベーステンプレートがある場合

**base.html**
<html>
    <head>
        <title> MegaCorp -{% block title %}{% endblock %}</title>
    </head>
    <body>
        <div id="content">{% block content %}{% endblock %}</div>
    </body>
</html>

と子テンプレート

**child.html**
{% extends "base.html" %}
{% block title %} Home page {% endblock %}
{% block content %}
... stuff here
{% endblock %}

python関数がrender_template( "child.html")を呼び出すと、htmlページが返されます

**Rendered Page**
<html>
    <head>
        <title> MegaCorp - Home page </title>
    </head>
    <body>
        <div id="content">
            stuff here...
        </div>
    </body>
</html>
于 2014-03-22T19:52:01.850 に答える
6

基本レイアウトでアクティブなメニューを強調表示しようとしていて、次のようなものが必要だと思います

{% extends 'base.html' %}
{% set active = "clients" %}

次に、base.html内で「アクティブ」を使用できます

于 2020-05-24T05:59:39.480 に答える
4

テンプレートを拡張する前にその変数を宣言する必要があるだけなので、拡張されたテンプレートは変数にアクセスできますtrying

{% set trying = True %}  <----------- declare variable

{% extends "/templates/template.html" %}
{% set title = "Welcome" %}
{% block head %}
{% endblock head %}
{% block content %}
{% endblock content %}

数年後ですが、それが後発者に役立つことを願っています

于 2021-03-09T18:20:25.073 に答える
2

私はあなたの問題を理解していません。変数をコンテキストに渡すと(試行する場合と同様に)、これらの変数は子と親で使用できるようになります。親にタイトルを渡すには、継承を使用する必要があります。場合によっては、superと組み合わせて使用​​する必要があります:http://jinja.pocoo.org/docs/templates/#super-blocks

この質問も参照してください:if内のアプリエンジンテンプレートブロックのオーバーライド

于 2013-01-10T13:05:49.817 に答える