كيفية استخدام الرياضيات تبقى في قالب جانغو؟

StackOverflow https://stackoverflow.com/questions/1438486

  •  08-07-2019
  •  | 
  •  

سؤال

وأود أن تغيير سمة فئة من لى بعد كل 4 عناصر (وهذا يعني 5، 9، يجب تغيير الطبقات عنصر لى ال13).

ولقد حاولت شيء مثل أدناه ولكنه أعطاني خطأ في بناء الجملة: لا يمكن تحليل الباقي: '٪ 4' من 'forloop.counter٪ 4'

{% for p in plist %}
{% ifequal forloop.counter%4 1 %}
    <li class="clear"> {{p.title}} </li>
{% else %}
    <li> {{p.title}} </li>
{% endifequal %}
{% endfor %}

وسوف أكون ممتنا إذا كان شخص ما سوف توحي لي حل العمل.

هل كانت مفيدة؟

المحلول

وأنت لا تستطيع أن تفعل التقييمات من هذا القبيل في قالب جانغو. العلامة ifequal تتوقع اثنين فقط من المعلمات، ويقارن بينها. قد تحتاج بعض نوع من التصفية.

ولكن، هل يمكن استخدام العلامة دورة بدلا من ذلك:

{% for p in plist %} 
    {% if forloop.first %} 
        <li> {{p.title}} </li>
    {% else %}
        <li{% cycle '' '' '' ' class="clear"' %}> {{p.title}} </li> 
    {% endif %}
{% endfor %}

وتحرير: وكما أشار، مسح حل الأصلي 4، 8، الخ، بدلا من 5 فصاعدا. لقد تحديث الجواب لتشمل التغييرات التي تولغا.

نصائح أخرى

ويمكنك استخدام forloop.counter0 ومرشح divisibleby:

{% ifequal forloop.counter0|divisibleby:"4" %}

والمنطق ستكون معقدة، ولكن divisibleby مرشح قد يساعد.

وأنت لا تريد أن تفعل مثل ذلك - وهذا ما <لأ href = "http://docs.djangoproject.com/en/dev/ref/templates/builtins/#cycle" يختلط = "نوفولو noreferrer" > cycle عبارة عن.

{% for p in plist %}
        <li{% ifnotequal forloop.counter 1 %}{% cycle ' class="clear"' '' '' '' %}{% endifnotequal %}>{{p.title}</li>
{% endfor %}

وهذا مثال مسح 5، 9، 13TH الخ.

وتحرير: قبعة طرفcpharmston

وأنا ناضلت مع هذا لبعض الشيء، في محاولة للحد من بطاقات التمهيد إلى 3 في بطاقة سطح السفينة.

وهذا يعمل في جانغو 2.1 وما فوق، للحد من صف إلى مجموعات من 3:

{% ifequal forloop.counter|divisibleby:"3" True %}   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top