3

Bu umarım oldukça kolay bir soru. Endgoal, veritabanı girişlerimi sütun başlıkları aracılığıyla sıralayabileceğim bir tabloda görebilmek. Ben döngüsü etiketlerindeki documentation okudum ama 'row1' ve 'row2' demek bilmiyor musun:Django Döngüsü Tag Nasıl Kullanılır

İkincisi
{% for o in some_list %} 
    <tr class="{% cycle 'row1' 'row2' %}"> 
     ... 
    </tr> 
{% endfor %} 

, nasıl doğru şablonumun içine uygulamak? Ben sıralamayı izin verecek olan JS library çok basit kullanıyorum:

page.html

{% if Variable %} 
    <table class="sortable"> 
     <tr> 
      <th>Title 1</th> 
      <th>Title 2</th> 
      <th>Title 3</th> 
      <th>Title 4</th> 
      <th>Title 5</th> 
     </tr> 
    {% for stuff in Variable %} 

     <tr class="{% cycle 'stuff' %}">  
      <td> 
       <a href="{% url 'detail_page' stuff.id %}"> 
       {{ stuff.Name|capfirst }}</a> 
      </td> 
     </tr> 
    {% endfor %} 
    </table> 
{% else %} 
    <p>No Results Found</p> 
{% endif %} 

İhtiyaç olursa benim models.py:

def view(request): 
    Variable = database.objects.all() 
    context = { 
     'Variable': Variable, 
    } 
    return render(request, 'app/page.html', context) 

DÜZENLEME: It Görünüşe göre, doğru kod her şeye sahipti, masamıza bir tablo gibi görünmüyordu. Döngü etiketine gerek yoktu, sadece döngü için. Aynı zamanda başka bir tablo satırını ekledikten sonra daha iyi görünüyordu: iki argüman şablona dönüşümlü eklenecektir döngüsü etiketi için

{% for stuff in Variable %} 
<tr> 
    <td>{{ stuff.Name|capfirst }}</td> 
    <td>{{ stuff.Number|capfirst }}</td> 
</tr> 
{% endfor %} 
+0

Buradaki 'cycle' etiketini kullanmak istediğinizi sanmıyorum. Tümü, forloop yinelemeleri gibi, birtakım değerler arasında geri ve ileriye doğru geçiş yapar. Dokümanlardaki "satırlar" yalnızca iki sınıf arasında değişiyor, her defasında forloop çalışıyor (yani ilk iterasyonda, className olarak row1'i, ikinci use 'row2'de, üçüncü use' row1' üzerinde) dördüncü 'row2' vb.) – rnevius

+0

Kesinlikle haklısın, yapmamalıyım. Döngü etiketini aldım, başka bir satır oluşturdum ve masamın 'form' aldığını görebildim. Görünüşe göre her şeyim vardı, sadece bazı eşit olmayan uygulanmış CSS, garip görünmesini sağladı. Ayrıca, hangi sınıf isimlerinin bana kısaca açıklayabilir misiniz? Döngü ile başlıyorum, kendi değişkenlerimi yaratıyorum (row1 ve row2). Genel olarak programlama ve kendini öğretme konusunda çok yeni. – Kervvv

+0

Sadece CSS sınıf adları (dizeler). Bu yüzden, dokümanlardaki kod listede öğeler varken 'class =" row1 "ve' class = "row2" 'arasında gidip gelirdi. – rnevius

cevap

4

, örneğin, şablonda kod {% for o in some_list %}<tr class="{% cycle 'row1' 'row2' %}"></tr>{% endfor %} üretecektir:

<tr class="row1"> 
    ... 
</tr> 
<tr class="row2"> 
    ... 
</tr> 
<tr class="row1"> 
    ... 
</tr> 
<tr class="row2"> 
    ... 
</tr> 
<!-- ... and so on while there are elements in some_list --> 

Ve benzeri. Normalde örneğin, bu bazı css iliştirirdi:

<style> 
    .row1 { 
     background: #345678; 
    } 
    .row2 { 
     background: #123456; 
    } 
</style> 

Bu, örneğin, alternatif Satırlar farklı arka plan renkleri verecekti.

+0

Açıklama için teşekkür ederiz. Temel olarak 'row1' ve 'row2' sadece dizgiler mi? En azından verdiğim örnekte? – Kervvv

+0

Tam olarak, onlar sadece dizeleri :), onlar sınıf isimleri olarak kullanılmak üzere tasarlanmıştır, böylece bu sınıflara bazı css stilleri ekleyebilir ve alternatif öğeleri birbirleri için öne çıkarabilirsiniz. Örneğin tabloları okumak daha kolay hale getirir. – srowland

+0

Teşekkürler! Bu şimdi bana çok daha mantıklı geliyor! Keşke bağışlar verebilseydim, ama daha fazla reha'ya ihtiyacım var. – Kervvv

İlgili konular