我下面是许多基本的Flask教程中的一个,其中{{ request.script_root|tojson|safe }}
Jinja2模板调用应该返回应用程序的基根(per Flask docshere)。在
我有一个super基本脚本设置:
# app/__init__.py
from flask import Flask
# import blueprints
from .views.index import index_blueprint
# create flask app
app = Flask(__name__)
app.register_blueprint(index_blueprint)
这是我的Blueprint
:
最后,我的index.html
模板(位于template
文件夹中:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<script type="text/javascript">
var $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
</script>
</head>
<body>
<p>Flask test.</p>
</body>
</html>
呈现之后,$SCRIPT_ROOT
应该包含脚本根,或者至少包含一个非空字符串。但是,生成的填充模板包含一个空字符串:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<script type="text/javascript">
var $SCRIPT_ROOT = "";
</script>
</head>
<body>
<p>Flask test.</p>
</body>
</html>
问题是{{ request.script_root|tojson|safe }}
为什么返回空字符串?在
从实数doc:
对我来说,只添加这个标记而不添加
var =
我猜你用的是烧瓶的WSGI。在这种情况下,Flask不知道
SCRIPT_NAME
env变量,因为通常HTTP服务器的工作是设置SCRIPT_NAME
(以及PATH_INFO
)。在Flask使用此env var设置} 类的相关函数):
script_root
属性(来自^{如果要手动设置,可以使用中间件(从this snippet)来实现:
^{pr2}$在此之后,
{{ request.script_root }}
将在模板中/myapp
。在相关问题 更多 >
编程相关推荐