تحقق مما إذا كان هناك متغير في TMPL_Context (Python ، Pylons ، Genshi)؟

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

  •  30-09-2019
  •  | 
  •  

سؤال

أحاول معرفة كيفية التحقق مما إذا كان هناك متغير في سياق القالب "TMPL_Context" باستخدام الأعمدة والبيثون. ما أحاول فعله هو:

لقد حصلت على قالب تخطيط أعمدة. يجب أن يحتوي هذا على قسم الرسائل إذا ، وفقط ، المتغير c.messages موجود في السياق. يبدو قسم الرسائل هكذا:

<div py:if="len(c.messages) > 0">
  <py:for each="msg in c.messages">
    <strong>${msg}</strong>
  </py:for>
</div>

هذا ينتج خطأ إذا لم تحدد وحدة التحكم c.messages. لذلك أود تضمين هذا فقط إذا تم تعريف المتغير. هل هناك حل لهذه المشكلة؟

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

المحلول

لدى Genshi طريقة محددة لـ JUT

إذا تم تعريفها (الرسائل):

http://genshi.edgewall.org/wiki/documentation/templates.html#defined-name

نصائح أخرى

تحويل الاختبار إلى hasattr(c, 'messages') and len(c.messages) > 0 .. أو ببساطة تعيين الرسائل على [] افتراضيًا

أقدر أنني أحفر خيطًا قديمًا ، لكن لدي حل بديل.

لقد ناضلت دائمًا في الحصول على تعريف () للعمل بشكل صحيح. الحل الأكثر فعالية الذي وجدته هو استخدام ما يلي لقائمة:

py:if="myobject.thelist.get('blah',0) == 0"

بيثون الأساسي في جينشي - إذا كان غير محدد ، فإننا نعطيها قيمة افتراضية. إذا كنت بحاجة إلى التأكد من أن القيمة الافتراضية لن تلوث بياناتك ، فقم بإرجاع شيء آخر بخلاف 0.

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