Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

casting ints to str in Jinja2

Tags:

python

jinja2

I want to cast an int that's passed to the template through the url, but it says that the str function isn't defined.

How do I get around this?

Here's my code:

{% extends "base.html" %}  {% block content %}      {% for post in posts %}     {% set year = post.date.year %}     {% set month = post.date.month %}     {% set day = post.date.day %}     {% set p = str(year) + '/' + str(month) + '/' + str(day) + '/' + post.slug %}     <h3>         <a href="{{ url_for('get_post', ID=p) }}">             {{ post.title }}         </a>     </h3>          <p>{{ post.content }}</p>     {% else: %}             There's nothing here, move along.     {% endfor %}  {% endblock %} 
like image 571
Mahmoud Hanafy Avatar asked Mar 24 '12 23:03

Mahmoud Hanafy


1 Answers

Jinja2 also defines the ~ operator, which automatically converts arguments to string first, as an alternative to the + operator.

Example:

{% set p = year ~ '/' ~ month ~ '/' ~ day ~ '/' ~ post.slug %} 

See Other operators or, if you really want to use str, modify the Environment.globals dictionary.

like image 104
Garrett Avatar answered Oct 14 '22 00:10

Garrett