django-Vorlage zum Auffüllen bootstrap-Zeilen und Spalten
Also hier mein problem: ich habe eine Reihe von Instanzen einer Klasse. Ich würde gerne eine Art Tabelle dieser Instanz-Objekte, so dass es ein maximum von sechs in jeder Reihe. In der bootstrap-Bedingungen, ich möchte die einzelnen Objekte werden repräsentiert durch eine Miniatur in einem "div" der Klasse "span2".
Meinem ersten Impuls zu nutzen, um eine verschachtelte for-Schleife, aber ich habe Probleme beim Bearbeiten meiner index-Variablen in der Vorlage, und ich kann nicht herausfinden, wie dies zu tun außerhalb meiner Vorlage.
Hier ist in der Regel, was die python - /django-template/pseudo-code ist versuche ich herauszufinden.
queryset = Class.objects.all()
set_length = queryset.count()
num_rows = set_length/6
#because I want 6 columns in each row, each with one instance
set_as_list = list(queryset)
# have a list so I can iterate through objects by index
for i in range(table_rows):
# make a row
<div class="row">
for j in range (i*6,(i+1)*6):
#make six or less columns
<div class="span2">
<p>set_as_list[j].attribute1</p>
<p>set_as_list[j].attribute2</p>
</div>
</div> # end row
Ich hoffe, dass diese eklatanten Vermischung von django templating language, python und html nicht beleidigen niemanden zu schlecht. nur versuchen, um die Idee auszudrücken, was ich versuche zu tun. Ich würde schätzen jede Hilfe jemand ist bereit sich zu bieten, weil ich ve wurde kämpfen mit diesem für Tage und haben einiges geschafft, der auf der Suche nach einer Lösung, die sowohl innerhalb einer Vorlage und außen.
Ich auch merken, dass es sein muss eine Letzte Zeile mit dem Rest der Objekte nach der die integer-division.
InformationsquelleAutor sinwav | 2013-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben keine Zeit zu erklären, aber ich habe ähnliches problem und bis ich Schloss diese browser Seite hier ist eine Lösung
Nach einem Blick über die beste Lösung, die ich finden konnte für meinen vorherigen Kommentar ist mit bootstrap .clearfix-Klasse
Es ist eine große Antwort , aber wie setzen Sie es, wenn Sie über verschiedene Anzahl von Spalten, die aufgrund der unterschiedlichen Geräte groß .. col-md-4 col-sm-6 col-xs-12 Vielleicht hinzufügen von Logik für divisibleby anderen zahlen und dann fügen Sie den letzten tags.
In diesem Fall teilt Sie durch die LCM von insgesamt Spalten. Zum Beispiel
col-md-4
zeigt 3 Spalten pro Zeilecol-sm-6
zeigt 2 Spalten pro Zeile undcol-xs-12
zeigt 1 Spalte pro Zeile, das LCM 3, 2 und 1 ist 6. So verwendendivisibleby:6
. Ebenso, wenn Sie hattencol-md-3
(4 Spalten in einer Zeile) undcol-sm-6
(2 Spalten in einer Zeile), die Sie verwenden würdendivisibleby:4
weil die LCM von 4 und 2 ist 4. (Ich weiß, dieser Kommentar ist drei Jahre zu spät, aber ich habe dies für jemanden anderes suchen, für eine Antwort).InformationsquelleAutor Mark
Seit forloop.counter beginnt der index mit 1, divisibleby 3 funktioniert nicht.
So verwenden forloop.counter0 statt.
InformationsquelleAutor Sharpless512
Könnte man den code ein bisschen mehr generisch. Hier ist die Logik:
Ich hoffe, dies löst dein problem 🙂
Tatsächlich, ich denke, dass dies möglicherweise ein Duplikat. Ich denke, dieser post hat die Lösung: stackoverflow.com/questions/16450124/...
Yep, bestätigt. Der link oben das problem löst. Es wird eine helper-Funktion, so dass wir Durchlaufen können Stücke von sechs in jeder Reihe.
Oops, sorry, ich vergaß, das Teil..Froh, dass du die Lösung gefunden..
Fast try {% wenn forloop.Zähler|divisibleby:"6" oder forloop.erste %}<div class="row">{% endif %} am Anfang der for-Schleife.
InformationsquelleAutor Arpit