Flask .request объект недоступен в шаблоне Jinja2 - PullRequest
0 голосов
/ 28 мая 2020

Я ожидаю обрабатывать URL-адрес, например: http://localhost/say?something=hello

, и в моем шаблоне у меня есть

{% for a in request.args %}
    {{a}} = {{ request.args[a]}} <br>
{% endfor %}

Однако это приводит к ' jinja2.exceptions.undefinederror '

Я могу «обойти» проблему, явно передав аргументы в шаблон в переменной, но, очевидно, это просто раздутый взлом. Любая помощь будет оценена.

Версии: Python 3.7.7 Flask 1.1.2 Jinja2 2.11.2


Я создал новый проект который воспроизводит ошибку. Он ничего не делает, кроме создания шаблона и не передает в него никаких переменных.

from flask import Flask
from jinja2 import Template

app = Flask(__name__)


@app.route('/')
def hello_world():
    return Template('{{request.args}}').render()


if __name__ == '__main__':
    app.run()

Ниже приводится обратная связь, которую я получаю при ошибке:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
[2020-06-02 11:28:44,660] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/dmg/PycharmProjects/TemplateTest/app.py", line 9, in hello_world
    return Template('{{request.args}}').render()
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/jinja2/environment.py", line 1090, in render
    self.environment.handle_exception()
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/jinja2/environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/jinja2/_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "<template>", line 1, in top-level template code
  File "/Users/dmg/Documents/Dev/TemplateTest/lib/python3.7/site-packages/jinja2/environment.py", line 471, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'request' is undefined
127.0.0.1 - - [02/Jun/2020 11:28:44] "GET / HTTP/1.1" 500 -

...