Jinja: يختلف نطاق تعيين الكتلة عن التعيين المضمن

تم إنشاؤها على ٢٧ يونيو ٢٠١٦  ·  5تعليقات  ·  مصدر: pallets/jinja

أريد تعيين متغير في قالب فرعي سيتم عرضه في القالب الأصلي. إذا استخدمت تخصيص الكتلة ، فلن يتم تقديم أي شيء. إذا كنت أستخدم الواجب المضمن ، فإنه يعمل كما هو متوقع. أنا أستخدم Jinja 2.8 مع Python 2.

base.html :

{{ content }}

bad.html مع تخصيص الكتلة ، لم يتم عرض أي شيء:

{% extends 'base.html' %}
{% set content %}
Hello, World!
{% endset %}

good.html ، يُعرض بشكل صحيح:

{% extends 'base.html' %}
{% set content = 'Hello, World!' %}
bug

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

حصلت على هذه المشكلة أيضا. اختبار بسيط:

{% extends "..." %}
...
{% set aaa = 'test' %}
{% set bbb %}
    <a href="/">bar</a>
{% endset %}
...
{% block some_block %}
 {{ aaa }} {# renders 'test' #}
 {{ bbb }} {# renders empty string #}
{% endblock %}

ال 5 كومينتر

حصلت على هذه المشكلة أيضا. اختبار بسيط:

{% extends "..." %}
...
{% set aaa = 'test' %}
{% set bbb %}
    <a href="/">bar</a>
{% endset %}
...
{% block some_block %}
 {{ aaa }} {# renders 'test' #}
 {{ bbb }} {# renders empty string #}
{% endblock %}

أحصل على نفس السلوك غير المتسق مع عبارة "مع":

{% with %}
{% set something = 'werd' %}
{% set something_block %}
werd werd werd
{% endset %}
{% endwith %}
...
{{ something }} {# renders empty string #}
{{ something_block }} {# renders 'werd werd werd' #}

ربما ترتبط هذه الأخطاء؟

ليس من المفترض أن تعمل العبارة with بهذه الطريقة ، لذا فهذا مقصود. لا يمكنني إعادة إنتاج المشكلة المحددة ولكن بشكل مستقل عن هذا في الماجستير.

لا يهمني ، أرى ما يدور حوله هذا الموضوع.

تم التغيير في 45b59b522a542c21611214b352df049a3b6dbcb4

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