Jinja: عامل التصفية map () يُرجع السلسلة "<generator object="" do_map="" at="">"</generator>

تم إنشاؤها على ٣ يناير ٢٠١٤  ·  7تعليقات  ·  مصدر: pallets/jinja

دع قائمة المناطق تكون بنية بيانات مثل هذا:

[{'zones': ['pe.com', 'ps.de', 'p-s.de'], 'file': 'gm'},
 {'zones': ['p-e.net', 'ps.net', 'p-s.net'], 'file': 'grpc'}]

عند استخدام zonelist | map (السمة = 'file') ، يتم إرجاع سلسلة مثل هذه:

<generator object do_map at 0x10bd730>

سيكون السلوك المتوقع هو إرجاع قائمة تحتوي على سمات "ملف" لقائمة المنطقة.

كما اتضح ، هناك حل بديل: استخدام ، على سبيل المثال ، zonelist | خريطة (سمة = 'ملف') | قائمة أو | فرز سينتج في القائمة المتوقعة:

[gm, grpc]

أنا أستخدم Jinja 2.7.1 مع Ansible 1.4.3.

التعليق الأكثر فائدة

لا أريد تغيير هذا لأن هذا قد يتسبب في أداء هذه الوظائف لأسفل والتي عادة ما تستخدم فقط مع التكرار. |list يصلحه.

ال 7 كومينتر

هذا ليس حشرة. هل تحاول إخراج JSON؟

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

لا يجب عليك فقط طباعة repr من كائنات Python العشوائية لتغذيتها مباشرة في Javascript. في حالتك يبدو أنك محظوظ ، اعتمادًا على المحتوى ، ومع ذلك ، قد تحصل في الواقع على JSON غير صالح ، وقد يكون أيضًا عيبًا أمنيًا كبيرًا. قم بإلحاق المرشحات list و tojson للحصول على JSON صالح ، أو استثناء عندما يكون الكائن غير قابل للترميز إلى JSON.

حقيقة أن repr لمعظم بايثون المبنية هي JSON-ish ليست مصادفة ، لكن النسخ ليس شيئًا يجب على المرء الاعتماد عليه لمنطق البرنامج الفعلي.

أيضًا ، لا أرى أي مكان في مستندات Jinja مما يعني أن map سيعيد أي شيء أكثر تحديدًا من التسلسل.

لا أريد تغيير هذا لأن هذا قد يتسبب في أداء هذه الوظائف لأسفل والتي عادة ما تستخدم فقط مع التكرار. |list يصلحه.

لم أكن أعرف عن الحل {{ ... | list }} لمشكلة ansbile <generator object do_map at 0xdeadbeef> .

شكرا لتقديم هذا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات