Я новичок в Flask и занимаюсь программированием уже 3 недели.
Я получаю: «jinja2.exceptions.UndefinedError: 'form' is undefined error», и я не знаю, как это решить.
Мой основной app.py: это просто соответствующий раздел
@app.route("/form", methods=["GET", "POST"])
def forms():
global reverse_exchange_rate, exchange_rate
form = CurrencyForm
if request.method == 'GET':
return render_template("form.html")
и моя форма. html:
{% extends "layouts/main.html" %}
{% from "formhelper.html" import render_field %}
{% block content %}
<form method="GET" action="/form">
<div style="text-align: center">
<h1>Currency Exchange</h1>
{{ form.csrf_token }}
{{ render_field(form.currency_1) }}
{{ render_field(form.currency_2) }}
{{ render_field(form.exchange_rate) }}
{{ render_field(form.submit) }}
</div>
</form>
{% endblock %}
Я получаю эту ошибку:
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\sport\Documents\Flask Attempt 2\app.py", line 21, in forms
return render_template("form.html")
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\templating.py", line 140, in render_template
ctx.app,
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\flask\templating.py", line 120, in _render
rv = template.render(context)
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\jinja2\environment.py", line 1090, in render
self.environment.handle_exception()
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\jinja2\environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\jinja2\_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "C:\Users\sport\Documents\Flask Attempt 2\templates\form.html", line 2, in top-level template code
{% from "formhelper.html" import render_field %}
File "C:\Users\sport\Documents\Flask Attempt 2\templates\layouts\main.html", line 26, in top-level template code
Open an interactive python shell in this frame{% block content %}{% endblock %}
File "C:\Users\sport\Documents\Flask Attempt 2\templates\form.html", line 9, in block "content"
{{ form.csrf_token }}
File "c:\users\sport\documents\flask attempt 2\venv\lib\site-packages\jinja2\environment.py", line 471, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'form' is undefined
Я попытался удалить этот раздел кода python, и все работает гладко. Но если я верну его обратно, я получу эту ошибку.
Я также пробовал изменить имя формы. html на form1. html, хотя ошибка остается прежней и говорит, что форма не определена. Я не знаю, в чем моя проблема.
Форма. html находится в папке шаблонов, и структура файлов правильная.
Любая помощь приветствуется. Пожалуйста, помните, что я занимаюсь кодированием около 3 недель.