передать два значения в тег шаблона - PullRequest
0 голосов
/ 04 апреля 2019

я новичок в Django и Python. в моем шаблоне мне нужно передать два значения тегу шаблона. эти два значения взяты из view.py .i читать шаблон Django, отправить два аргумента в тег шаблона? но я могу решить мою проблему.

view.py:

def order(request):
   .
   .
   . 
 return render(request, 'cart.html', {
                "total_price": total_price,
                "final_verified": profile.teacher.final_verified,
                "cart": the_cart,
                "cart_items": the_cart.cartitem_set.filter(deleted=False),
                "discount": discount
            })

template.html:

{% load tags %}

 <div class="pull-left">
                      <i>
                        {% if final_verified %}
                          {{ total_price|rials_to_toman|intcomma:False }}
                          {%  final_price total_price discount %} <!--problem is here-->
                        {% else %}
                          0
                        {% endif %}
                       </i>Price
 </div>

tag.py:

from django import template
register = template.Library()

@register.simple_tag
def final_price(num,discount):   
    return str((int(num) * int(discount)) // 100)

@register.filter
def rich_to_pay_calc(num):
    if num:
        return str((int(num)*8 // 10) + 3000)
    else:
        return ""

@register.filter
def percent_80(num):
    if num:
        return str((int(num) * 8) // 10)
    else:
        return ""


@register.filter
def truncate(num):
    num = str(num)
    return num[:3]

сначала я использовал {% load final_price%} в верхней части шаблона, но эта ошибка возникает при попытке загрузить URL-адрес этого шаблона:

TemplateSyntaxError at /order/cart/
'final_price' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_static
admin_urls
cache
humanize
i18n
l10n
log
static
staticfiles
tags
tz

в tags.py существует какой-то другой тег (как видно из кода выше). Забавно, что в шаблоне будет доступен другой тег, кроме final_price, который будет «simple_tag» вместо «filter». Я новичок в django и веб-разработке, так что простите, если проблема глупа. Тпй

1 Ответ

0 голосов
/ 04 апреля 2019

Поскольку вы использовали простой тег, я думаю, вам нужно загрузить само имя тега как:

 {% load final_price %} <--add

 <div class="pull-left">
         <i>
         {% if final_verified %}
             {{ total_price|rials_to_toman|intcomma:False }}
             {% final_price total_price discount %}
                    {% else %}
                      0
                    {% endif %}
                   </i>Price
</div>

Надеюсь, что это работает

...