python - هل تريد استخدام علامة `مع` لعكس منطقية في قالب جانغو؟




django django-templates (2)

أريد تمرير قيمة إلى علامة include هو أوبوسيت من متغير مرت في.

هذا هو ما حاولت (أساسا):

{% with s_options as not disp %}
    {% include "e.html" with show_options=s_options only %}
{% endwith %}

هل هناك أي طريقة للقيام بما أريد؟


لست متأكدا مما إذا كان هذا هو الحل الأمثل، ولكني قمت بعمل فلتر جديد:

from django import template

register = template.Library()


@register.filter(name="not_value")
def not_value(true_value):
    return not true_value

ثم فعلت:

{% load not_value %}
{% with s_options=disp|not_value %}  {# WILL NOT WORK WITH "as" #}
    {% include "e.html" with show_options=s_options only %}
{% endwith %}

لاحظ، ربما، هذا قد يعمل كذلك (على الرغم من أنني لم أحاول):

{% include "e.html" with show_options=s_options|not_value only %}

هذا هو قليلا من الإختراق باستخدام المدمج في تصفية يسنو ، لكنه يعمل:

{% with reversed_value=original_value|yesno:',True' %}
    {# Do something #}
{% endwith %}

لاحظ الفاصلة قبل 'True' . الطريقة التي يعمل بها هي أن yesno سيعيد سلسلة فارغة إذا كانت القيمة الأصلية True ، والتي سيتم تقييمها ك فالس إذا كنت تقوم بأي عمليات منطقية عليها.





django-views