Вызов шаблона торнадо включает использование переменной - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь динамически включать html страниц, используя шаблон торнадо

{% set tab = (handler.request.arguments).get("tab",[b"input"])[0].decode('utf-8') %}
{% set page_path =  "{}.html".format(tab) %}
{% include page_path %}

Но почему-то это выдает ошибку:

FileNotFoundError: [Errno 2] No such file or directory: '/home/usr/Data/app/static/html/page_path'

Я также пытался использовать

{% include {{page_path}} %}

Что также приводит к ошибке:

FileNotFoundError: [Errno 2] No such file or directory: '/home/usr/Data/app/static/html/{{page_path}}'

Есть ли способ динамически использовать переменные в шаблонах торнадо?

1 Ответ

0 голосов
/ 05 марта 2020

Согласно документации Tornado можно использовать это:

``{% module *expr* %}``
    Renders a `~tornado.web.UIModule`.  The output of the ``UIModule`` is
    not escaped::

        {% module Template("foo.html", arg=42) %}

    ``UIModules`` are a feature of the `tornado.web.RequestHandler`
    class (and specifically its ``render`` method) and will not work
    when the template system is used on its own in other contexts.

Таким образом, использование этого фрагмента будет поддерживать шаблон торнадо с использованием переменных:

{% set tab = (handler.request.arguments).get("tab",[b"input"])[0].decode('utf-8') %}
{% set page_path =  "{}.html".format(tab) %}
{% module Template(page_path) %}
...