I'm new to Flask and have been programming for 3 weeks now.
I am getting a: "jinja2.exceptions.UndefinedError: 'form' is undefined error" and I don't know how to solve it.
My main app.py: This is just the relevant section
@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")
and my form.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 %}
I am getting this error:
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
I have tried removing that section of python code and everything runs smoothly. But if I put it back in I get that error.
I have also tried changing the name of form.html to form1.html although the error still stays the same and says form is undefined. I don't know what my problem is.
The form.html is in the templates folder and the structure of files is correct.
Any help is appreciated. Please remember that I have been coding for about 3 weeks.