2016-11-18 4 views
0

Ich habe eine Django-Vorlage Ich würde manchmal gerne eine Liste weitergeben und möchte manchmal einen einzelnen Wert übergeben. Wie kann die Vorlage sagen, welche Datei sie erhalten hat?Wie man Liste von Nicht-Liste in Django Vorlage erzählt?

ich den Wert denke würde wie eine von ihnen eingestellt werden:

context = { 
    'foo' : 'bar 
} 

oder:

context = { 
    'foo' : ['bar', 'bat', 'baz'] 
} 

Dann würde die Template-Code haben, die etwa wie folgt aussieht:

{% if foo isa list %} 
    {% for item in foo %} 
     {{ item }}<br> 
    {% endfor %} 
{% else %} 
    {{ item}}<br> 
{% endif %} 

Ich kann es einrichten, um zum Beispiel foo oder Dummkopf zu haben, und nach dem einen oder dem anderen zu suchen. Allerdings wäre es ein bisschen netter (imo) nur foo zu haben, das war entweder eine Liste oder nicht.

Antwort

0

Wenn Sie beabsichtigen, es so zu tun, dann fügen Sie einfach einen Scheck, dass es hat keine format (im Falle von String) -Methode und hat 0 Index, wenn ja, dann ist es eine andere Liste als Einzelwert

{% if foo.0 and not foo.format %} 
    {% for item in foo %} 
     {{ item }}<br> 
    {% endfor %} 
{% else %} 
    {{ item}}<br> 
{% endif %} 
+1

Aber wenn 'foo' eine Zeichenkette ist, würde' foo.0' nicht einfach ein erstes Zeichen zurückgeben? –

+0

Ja, du hast Recht. Aktualisierte Antwort – falloutcoder

+0

Das sieht ausgezeichnet aus - schön und einfach zu kodieren, einfach für Leute zu verstehen, und sollte gut mit dem vorhandenen Code passen. Vielen Dank! – tewok

0

Ich denke, Ihr Ansatz ist unnötig kompliziert. ich würde nur mit einer Liste gehen:

views.py

foo_list = ['bar'] 
context = { 
    'foo': foo_list, 
    'foo_len': len(foo_list), 
} 

Vorlage

{% if foo_len == 1 %} 
    {{ foo.0 }} 
{% else %} 
    {% for item in foo %} 
     {{ item }} 
    {% endfor %} 
{% endif %} 
+0

Dies könnte unnötig kompliziert sein, aber es wird in Legacy-Code verwendet. Die Methode, die ich beschreibe, ist (wahrscheinlich) der einfachste Weg, um Code, Programmierer und Zeitplan glücklich zu halten. Danke für den Vorschlag. – tewok

Verwandte Themen