كيفية التعامل مع المتغيرات في قوالب الميراث

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

  •  05-07-2019
  •  | 
  •  

سؤال

وأريد فقط أن تحدد سمة معرف بطاقة الجسم في قالب الطفل. الحل الأول يعمل تماما:

وbase.html:

[body{% block bodyid %}{% endblock %}]

وchild.html:

{% block bodyid %} id="myId"{% endblock %}

وانها بسيطة وباردة! ولكن أنا لا أحب أن أشير معرف = "myId" في كل قالب الطفل. أريد فقط إرسال قيمة 'myId "إلى القالب الأم، حيث أنها وضعت لمعرف =" .... ". لذا، أنا ابتكار هذا الأسلوب:

وbase.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}]

وchild.html:

{% block bodyid %}
    {% with 'myId' as bodyid %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

ولكن هذا أمر فظيع ومملة مقارنة الحل الأول. هل هناك أي طريقة جيدة للقيام بذلك؟

وهذه المشكلة هي أعمق، من إدارة bodyId. أعتقد، في محاولة لايجاد وتنظيم نظام subtemplate عن طريق الإرث قالب جانغو القياسي ل.

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

المحلول

في قالب قاعدة:

<body id="{% block bodyid %}{% endblock %}">

في القالب الطفل:

{% block bodyid %}myId{% endblock %}

إذا فهمت سؤالك بشكل صحيح، وهذا ينبغي أن يكون كافيا لتحقيق ما تريد؛ فقط إرسال ID actualy (myId) إلى قالب قاعدة.

نصائح أخرى

وأنت، إذا كنت تفضل، تعيين هذا عن طريق الشفرة - بحيث معرف الخاص هي جزء من كائن سياق الخاص بك، ولذلك لا تحتاج إلى إدخالها في قوالب الطفل، مجرد وجهات النظر التي تسميها

.

ويمكنك بعد ذلك أقول القالب الأساسي الخاص بك للحصول على هوية من وجوه السياق، أو بالأحرى مجرد استخدام بناء الجملة قالب له:

<body id="{{ body_id }}">

وتفضيل شخصية هنا بطبيعة الحال، وذلك يعتمد على هيكل القوالب وجهات النظر، ولكن في الطريق كنت تفعل ذلك.

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