2009-03-26 8 views
2

Ich habe ein seltsames Problem speziell für meine Django-Bereitstellung unter Python 2.6 + Ubuntu + Apache 2.2 + FastCGI.Django Vorlage wenn Tag nicht funktioniert unter FastCGI beim Überprüfen bool True

Wenn ich eine Vorlage als solche haben:

{% with True as something %} 
    {%if something%} 
     It Worked!!! 
    {%endif%} 
{%endwith%} 

es sollte die Zeichenfolge Ausgabe "Arbeitete It !!!". Es ist nicht auf meinem Produktionsserver mit mod_fastcgi.

Dies funktioniert perfekt, wenn ich lokal mit Runserver laufen.

Ich änderte den Code zu dem folgenden, um es aus Gründen der Zweckdienlichkeit zu arbeiten, und das Problem ging weg.

{% with "True" as something %} 
    {%if something%} 
     It Worked!!! 
    {%endif%} 
{%endwith%} 

Es scheint, dass die Vorlage Parser, wenn sie unter FastCGI ausgeführt wird, können Iness nicht ermitteln (oder Truthitude) [ein dickes Lob, wenn Sie die Referenz erhalten] von Bool Variablen.

Hat jemand das gesehen? Hast du eine Lösung?

Antwort

3

Hmm ... True ist kein gültiges Token in Django Vorlage Sprache, oder? Ich habe keine Ahnung, wie es lokal funktioniert - es sei denn, es wird irgendwo in den Kontext mit einem Wert ungleich Null hinzugefügt. Daher denke ich, dass Ihr zweites Problem möglicherweise nicht mit dem ersten Problem zusammenhängt.

+0

Vielleicht sind sie nicht verwandt. Die Art, wie ich die Parameter für das {% if%} - Tag verstanden habe, besteht jedoch darin, dass es an die resolve() -Methode mit einem Kontext übergeben wird. Wenn es in einen Variablennamen aufgelöst wird, wird der Variablenname zugewiesen. Sonst wird es als Literal interpretiert (True ist gültiges Literal) –

+1

True ist in einer Vorlage standardmäßig kein gültiges Literal. (Aus Gründen der Gesundheit habe ich es lokal getestet, um es zu bestätigen) – muratgu

Verwandte Themen