Django template comparing string

Question:

I’m new with django. I’m stuck with the problem of comparing string in the template.

I have use ifnotequal tag to compare string. But it is not working.

I have try to output the variable:

{{ request.user.username }} 
{{ article.creator }}

Here I compare:

{% ifnotequal request.user.username article.creator %}
    {# output something #}
{% endifnotequal %}

But when I do the hardcode: It works.

{% ifnotequal "justin" "mckoy" %}
    {# output something #}
{% endifnotequal %}

what is the problem? The article.creator is coming from the database and the user.username is from the request.

Can anyone help me with this issue?

Asked By: justin

||

Answers:

article.creator is a User and request.user.username is a string. Try comparing request.user instead.

Try this:

{% ifnotequal article.creator|stringformat:"s" request.user.username %}
Answered By: sandeep sangwan

For string compare in template use

{% if name == "someone" %}
   ............
   ............
{% endif %}

and for not equal

{% if name != "someone" %}
   ............
   ............
{% endif %}
Answered By: Nauman Tariq
{% ifequal material.unit 'U' %}
    <p>are equals!<p/>
{% endifequal %}
Answered By: hopieman

Note that if you do not put spaces before and after ==, Django could not parse the expression.

{% if MyProd.Status == "Processing" %}
       <button class="btn btn-outline-warning">{{MyProd.Status}}</button>
{% else %}
       <button class="btn btn-outline-success">{{MyProd.Status}}</button>
{% endif %}
Answered By: Sanket Suryawanshi
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.