I have a form on one page that I want to submit to another page. I can't figure out how to create the link to that second page.
Project layout:
Fileserver/
config.py
requirements.txt
run.py
setup.py
app/
__init__.py
static/
css/
img/
js/
templates/
formAction.html
formSubmit.html
index.html
__init__.py
:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
ip = request.remote_addr
return render_template('index.html', user_ip=ip)
index.html
:
<!DOCTYPE html>
<html lang="en">
<body>
<ul>
<li><a href="/formSubmit.html">Check Out This Form!</a>
</ul>
</body>
</html>
I can see the page at localhost:5000/ without issue.
I have also tried:
<a href="{{ url_for('templates', 'formSubmit") }}"></a>
as well as:
<a href="{{ url_for('formSubmit') }}"></a>
What am I missing?
Best Answer
url_for
generates urls to routes defined in your application. There are no (or should probably not be any) raw html files being served, especially out of the templates folder. Each template should be something rendered by Jinja. Each location you want to display or post a form to should be handled and generated by a route on your application.In this case, you probably want to have one route to both render the form on GET and handle the form submit on POST.
__init__.py
:templates/index.html
:templates/cool_form.html
:I don't know what your forms and routes actually do, so this is just an example.
If you need to link static files, put them in the
static
folder, then use: