2012-06-01 18 views
20

Ich bin neu mit Django. Ich bin fest mit dem Problem der Zeichenfolge in der Vorlage zu vergleichen.Django Vorlage Vergleich Zeichenfolge

Ich habe ifnotequal Tag verwenden, um Zeichenfolge zu vergleichen. Aber es funktioniert nicht.

Ich habe versucht die Variable Ausgabe:

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

Here I vergleichen:

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

Aber wenn ich die hard tun: Es funktioniert.

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

Was ist das Problem? Die article.creator kommt aus der Datenbank und die user.username stammt aus der Anfrage.

Kann mir jemand bei diesem Problem helfen?

+0

'article.creator' ist eine Zeichenfolge verwenden, vergleichen? Können Sie das Modell veröffentlichen? – yprez

+0

Auch in Ihrem Beispiel ist es "request.user.usname" nicht "request.user.username". Tippfehler? – yprez

+0

@Yuri - Tippfehler in meinem Beispiel .. – justin

Antwort

13

article.creator ist ein User und request.user.username ist eine Zeichenfolge. Versuchen Sie stattdessen request.user zu vergleichen.

+3

Wenn zwei Dinge in Django Vorlagen nicht gleich sind, sind es oft die Typen der Variablen. Es passiert mehrmals, dass ich versuchte, 1 und "1" zu vergleichen. –

+0

@Simeon - danke, das funktioniert .. :) – justin

+0

es funktioniert auch, wenn 'article.creator.username' mit' request.user.username' vergleichen – justin

35

Try this:

{% ifnotequal article.creator|stringformat:"s" request.user.username %} 
+4

Diese Antwort braucht mehr Stimmen! Hämmerte meinen Kopf gegen die Wand! – pete

+0

Es druckt wie eine Zeichenfolge, aber es ist keine Zeichenfolge - auch für UUIDs gültig. – jsbueno

+0

Danke dafür, ich habe versucht, eine Variable zu filtern, die von vielen Leerzeichen umgeben war, und das war die Lösung – Bwyss

18

Bei String in Vorlage

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

und nicht gleich

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