【发布时间】:2021-06-05 07:57:23
【问题描述】:
我无法弄清楚我的 Flask 服务器的问题,当我尝试将任何上下文或全局变量从我的视图函数传递到模板时,它就没有启动。浏览器仅在尝试访问 url 时显示“内部服务器错误”。经过一番观察,我意识到问题只发生在尝试访问模板中传递的上下文变量时。当我从模板中删除 jinja 语法时,服务器会启动。
app.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template("home.html", name="Satya")
home.html
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>Hi {{name}}</h1>
</body>
</html>
这是我使用“flask run”运行应用程序时的堆栈跟踪:
**I just can't seem to get past this and it is so frustrating. Any help would be appreciated.**
AttributeError
AttributeError: 'Token' object has no attribute 'test'
Traceback (most recent call last)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "D:\MCA\BIT-2020\FlaskProject\main.py", line 7, in home
return render_template("home.html", name="Satya")
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\flask\templating.py", line 138, in render_template
ctx.app.jinja_env.get_or_select_template(template_name_or_list),
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\environment.py", line 1068, in get_or_select_template
return self.get_template(template_name_or_list, parent, globals)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\environment.py", line 997, in get_template
return self._load_template(name, globals)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\environment.py", line 958, in _load_template
template = self.loader.load(self, name, self.make_globals(globals))
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\loaders.py", line 137, in load
code = environment.compile(source, name, filename)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\environment.py", line 749, in compile
source = self._parse(source, name, filename)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\environment.py", line 606, in _parse
return Parser(self, source, name, filename).parse()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 1038, in parse
result = nodes.Template(self.subparse(), lineno=1)
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 1012, in subparse
add_data(self.parse_tuple(with_condexpr=True))
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 725, in parse_tuple
args.append(parse())
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 523, in parse_expression
return self.parse_condexpr()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 528, in parse_condexpr
expr1 = self.parse_or()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 543, in parse_or
left = self.parse_and()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 552, in parse_and
left = self.parse_not()
File "D:\MCA\BIT-2020\VirtualEnvs\test_env\lib\site-packages\jinja2\parser.py", line 560, in parse_not
if self.stream.current.test("name:not"):
AttributeError: 'Token' object has no attribute 'test'
【问题讨论】:
-
非常感谢。我希望我早点找到此修复程序。
标签: python templates flask jinja2 internal-server-error