Как передать переменную в шаблон Jinja, который не был обработан? - PullRequest
0 голосов
/ 16 октября 2018

Я пишу колбу для книги со многими главами.На странице указателя у меня есть ссылки на каждую главу как: <a href="/chapters/{{ chapter }}">{{ chapter }}</a>.Моя функция рендеринга каждой главы:

@app.route("/chapters/<chapter>")
def chapter(chapter):
    return render_template(f"chapters/{chapter}.html", chapter=chapter)

Я разделил макет главы и текст.Так что мои chapter.html включают макет и содержат блок для фактического содержания:

{% include "layout.html" %}

{% block chapter %}{% endblock %}
...

В то время как что-то вроде chapter-1.html расширяет chapter.html и содержит фактический текст книги.Но теперь я хочу, чтобы на chapter.html были кнопки, позволяющие пользователю перейти к предыдущей / следующей главе.Есть ли способ передать переменную chapter из функции в шаблон chapter.html без ее визуализации?

1 Ответ

0 голосов
/ 16 октября 2018
@app.route("/chapters/<chapter>")
def chapter(chapter):
    session['chapter'] = chapter
    return render_template(f"chapters/{chapter}.html", chapter=chapter)

Используйте CSS для стилизации тега <a>, чтобы он выглядел как кнопка , и сохраните главу в сеансах .

<a href="{{ url_for( 'chapter', chapter=session['chapter'] - 1) }}" class="button-style">Previuos</a>

и для следующей главы:

<a href="{{ url_for( 'chapter', chapter=session['chapter'] + 1) }}" class="button-style">Next</a>

Если значением вашей главы является строка, используйте chapter=int(session['chapter']).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...