saidozcan
saidozcan

Reputation: 2215

Short If use in Python-Jinja2

I'm building a website in Python and want to write a simple <select> box.

Here's my code:

<td>Posts Per Page</td>
<td>
    {{ g.blogOptions['posts_per_page'] }}
        <select name="posts_per_page">                        
            {% for counter in range(5, 20, 5) %}
                <option value="{{counter}}" {{ "selected=true" if counter == g.blogOptions['posts_per_page'] else '' }}> {{ counter }}</option>
            {% endfor %}
        </select>
</td>

On the line 3 of this code, it prints 10 but in the for loop it doesn't hit the if and doesn't write selected=true

How can I fix this?

Upvotes: 0

Views: 990

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121196

You want to use {% if %}/{% endif %}:

<select name="posts_per_page">                        
    {% for counter in range(5, 20, 5) %}
        <option value="{{counter}}" {% if counter == g.blogOptions['posts_per_page']  %} selected="selected" {% endif %}> {{ counter }}</option>
    {% endfor %}
</select>

Make sure that g.blogOptions['posts_per_page'] is an integer; if it is a string instead, you'll need cast it:

{% set posts_per_page = int(g.blogOptions['posts_per_page']) %}
<select name="posts_per_page">                        
    {% for counter in range(5, 20, 5) %}
        <option value="{{counter}}" {% if counter == posts_per_page  %} selected="selected" {% endif %}> {{ counter }}</option>
    {% endfor %}
</select>

Upvotes: 1

Related Questions