سؤال

هذا مأخوذ مباشرة من جانغو القالب:

{% for day in days %}
  <!-- {% cycle 'day' 'day' 'day last' as cls %} -->
  {% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
  ...
  {% endrounded %}
{% endfor %}

لقد علق بها {% cycle %} لأن أنا فقط استخدامه لتعيين "cls"إلى "day last"كل التكرار الثالث في الحلقة.هل هناك أي طريقة أفضل للقيام بذلك من دون إضافة أي رمز الى الرأي ؟ (الناس يقولون أن المنطق يجب أن تبقى خارج القوالب, ولكن بعد ذلك العكس يكاد يكون أسوأ من ذلك.)

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

المحلول

وأنا لست متأكدا من أنني أفهم لماذا كان لديك مشكلة، لأن الحل الحالي يبدو للعمل. أنا لا أعتقد أنك في حاجة التعليقات HTML، منذ {% cycle %} مع as يفعل أي شيء لا إخراج، ولكن بغض النظر عن ذلك على ما يبدو على ما يرام.

ولكن إذا كنت تريد طريقة أخرى للقيام بذلك، يمكنك استخدام فلتر divisibleby:

{% for day in days %}
  {% if forloop.counter|divisibleby:3 %}
     {% rounded "black" "day last" %}
  {% else %}
     {% rounded "black" "day" %}
  {% endif %}
{% endfor %}

ولكن أنا لا أعتقد أن هذا هو أي أفضل من ما لديك بالفعل.

نصائح أخرى

'الجديد في الإصدار التنمية جانغو'

ودورة 'باسم' العلامة ديها الآن الوضع "الصامت":

http://docs.djangoproject.com/en/dev / المرجع / قوالب / builtins / # دورة

http://code.djangoproject.com/ticket/13567

لا ينبغي أن يكون منطق التطبيق في القوالب الخاصة بك. منطق العرض لا تنتمي هناك (وهو ما يبدو أن يكون). كنت وضعت هناك.

يممم...هذا ما cycle الوسم هو.ليس لدي فكرة لماذا كنت تحاول تجنب ذلك ، ولكن يجب أن نعرف:

  1. أي منطق تتطلب انتقائية تطبيق بعض القوانين تتطلب كود بايثون منذ قالب مدونة لا تعيين المتغيرات.
  2. الثعبان رمز يجب أن يكون إما من templatetag أو عرض وظيفة المنطق.

حتى إذا كنت لن تستخدم نظر المنطق ، كنت عالقا مع templatetags.إما تكتب الخاصة بك أو استخدام واحدة التي بنيت في. cycle يبدو أن عن سهل مثل أي دولة أخرى.ما هي المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top