1

我有一个使用烧瓶的网站,我想在我的网站内显示由 goaccess 生成的统计信息。

在我的 route.py 中,我添加了:

@main.route("/report")
def report():
    return render_template('report.html')

我已经确保report.html 在模板forlder 中。

问题是我收到以下错误:

File "/templates/report.html", line 866, in template
    <div class="grid-module {{#className}}{{className}}{{/className}}{{^className}}gray{{/className}}">
File "/lib/python3.6/site-packages/jinja2/environment.py", line 497, in _parse
    return Parser(self, source, name, encode_filename(filename)).parse()
File "/lib/python3.6/site-packages/jinja2/parser.py", line 901, in parse
    result = nodes.Template(self.subparse(), lineno=1)
File "/lib/python3.6/site-packages/jinja2/parser.py", line 874, in subparse
    next(self.stream)
File "/lib/python3.6/site-packages/jinja2/lexer.py", line 359, in __next__
    self.current = next(self._iter)
File "/lib/python3.6/site-packages/jinja2/lexer.py", line 562, in wrap
    for lineno, token, value in stream:
File "/lib/python3.6/site-packages/jinja2/lexer.py", line 739, in tokeniter
name, filename)
jinja2.exceptions.TemplateSyntaxError: unexpected char '#' at 298804

有人知道如何解决这个问题吗?我不想碰 report.html 并想这样使用它。

如果没有解决方案,任何人都可以建议一种从互联网访问 report.html 的方法吗?

谢谢你。

4

1 回答 1

0

您想要做的是使用烧瓶提供静态文件。请参阅如何在 Flask 中提供静态文件


如果您查看文档功能“使用render_template给定上下文从模板文件夹呈现模板”。您拥有的是一个完整的、自包含的 HTML 文件,而不是模板。您可以使用send_from_directory函数。请注意,在生产环境中,您可能不想使用 Flask 提供文件,而是使用 Web 服务器(例如 NGINX)。

示例代码:

from pathlib import Path
import os
...    

APP_ROOT = os.path.dirname(os.path.abspath(__file__))
TEMPLATES_DIR = os.path.join(APP_ROOT, 'templates')

@app.route("/report")
def report():
    REPORT_FILE = os.path.join(TEMPLATES_DIR, "report.html")
    if Path(REPORT_FILE).is_file():
        return send_from_directory(REPORT_FILE_PATH, "report.html")
    return "No stats."
于 2021-10-22T08:33:02.640 回答