Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Link to a specific location in a Flask template

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?

like image 410
Don Smythe Avatar asked Mar 07 '16 12:03

Don Smythe


People also ask

How do I link a template in Flask?

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.

What does Render_template do in Flask?

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.


1 Answers

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">
...
like image 136
Don Smythe Avatar answered Sep 28 '22 16:09

Don Smythe