In HTML I can link directly to a specific location on a page, assuming there's an element with the given id:
<a href="http://www.example.com/stuff.html#exactlocation">Go there</a>
In Flask I tried to add the anchor to render_template
but I get jinja2.exceptions.TemplateNotFound: stuff.html#exactlocation
.
@main.route('/exactlocation')
def exactlocation():
return render_template('stuff.html#exactlocation')
How do I link to a specific location in a template?
html template file in a directory called templates inside your flask_app directory. Flask looks for templates in the templates directory, which is called templates , so the name is important. Make sure you're inside the flask_app directory and run the following command to create the templates directory: mkdir templates.
render_template is a Flask function from the flask. templating package. render_template is used to generate output from a template file based on the Jinja2 engine that is found in the application's templates folder. Note that render_template is typically imported directly from the flask package instead of from flask.
Thanks to dirn's comments I managed to get this working with the code below.
Pass the _anchor
keyword to url_for
to append an anchor to the generated URL.
nav menu:
<a href="{{ url_for('.stuff', _anchor='exactlocation') }}">Go to specific id on suff page</a>
Flask route:
@main.route('/')
def stuff():
return render_template('stuff.html')
stuff.html
:
...
<section id="exactlocation">
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With