2009-08-02 3 views
13

tôi có nhiều lĩnh vực trong hình thức của tôi, tôi đã cố gắng áp dụng css khác nhau để người hàng xóm hình thành các lĩnh vực nhưdjango mẫu forloop.counter câu hỏi

<li class='thiscolor' > 
    <field> 
</li> 

<li class='thatcolor' > 
    <field> 
</li> 

nếu có một cách như

{% for field in form %} 
    **{% if forloop.counter%2 == 0 %}** 
    <li class='thiscolor'> 
    {% else%} 
    <li class='thatcolor'>  
    {%endif} 
    {{field}} 
    </li> 
{% endfor %} 

cho forloop. quầy tính tiền ?

Cảm ơn rất nhiều!

Trả lời

24

Các cycle tag được thiết kế cho loại vấn đề:

{% for field in form %} 
    <li class="{% cycle 'thiscolor' 'thatcolor' %}">{{ field }}</li> 
{% endfor %} 
21

Tôi đồng ý với Jarret rằng cycle là tốt nhất ở đây, nhưng để thực sự trả lời câu hỏi, hoạt động %2==0 có thể được nhân rộng bằng cách sử dụng các bộ lọc divisibleby.

{% if forloop.counter|divisibleby:"2" %} 
1

Một điều cần nhớ là vì đây là vấn đề kết thúc trước - kiểu dáng là thứ bạn đang cố gắng thực hiện - bạn có thể giải quyết nó ở giao diện người dùng. Có một ví dụ tốt được cung cấp về phía dưới cùng của A List Apart article này. Tất nhiên, nếu bạn đã làm việc mã Django không có ý nghĩa trong việc này ngay bây giờ.

+0

Có, nhưng mẫu chắc chắn là phần front-end của Django ("V" trong MVC). – DrBloodmoney

+0

Đúng vậy, đó là một vấn đề về kiểu dáng có thể được xử lý luân phiên phía khách hàng (CSS). – bennylope