我正在为一本包含很多章节的书编写一个烧瓶应用程序。在索引页面上,我具有每个章节的链接,分别为:<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
而不进行渲染吗?
答案 0 :(得分:1)
@app.route("/chapters/<chapter>")
def chapter(chapter):
session['chapter'] = chapter
return render_template(f"chapters/{chapter}.html", chapter=chapter)
使用CSS设置<a>
标记的样式,使其看起来像button并将该章存储在sessions中。
<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'])
。