带有 url 参数的烧瓶 render_template

flask render_template with url parameter

我使用 pdf.js 在 web 中呈现 pdf。目标的格式 url 像这样:

http://www.example.com/book?file=abc.pdf

我的问题是: 我使用烧瓶模板生成页面使用:

return render_template('book.html', paraKey=paraValue)

但是如何将 url 参数 "file=abc.pdf" 附加到 url? 该参数将由 viewer.js(包含在 book.html 中)读取,使用它来读取文件以呈现 pdf。

刚开始接触flask,希望大家多多指教!

您可以通过请求对象获取请求中传递的参数url。

    @app.route("/book", methods=["GET"])
    def get_book():
        file = request.args.get("file")
        if file:
            return render_template('book.html', file=file)
        abort(401, description="Missing file parameter in request url")

This topic 帮助我解决了我的问题,但它似乎不是完美的答案。 代码 viewer.py 不是 changed.Solution 是:

step1)我嵌入代码

<script>var FILE_PATH = {{ file }}</script>

在模板中。

step2)将使用变量的脚本需要修改代码(viewer.js),来自:

var file = 'file' in params ? params.file : DEFAULT_URL

var file = FILE_PATH ? FILE_PATH: DEFAULT_URL

viewer.js不再独立

希望有人提供更好的解决方案。

您可以使用重定向功能,它可以根据您的需要重定向您:

@app.route('/book')
def hello():
    file = request.args.get('file')
    if not file:
        return redirect("/?file=abc.pdf")
    return render_template('book.html', paraKey=paraValue)