将两个值传递给模板标签
pass two value to a template tag
我是 django 和 python 中的新人。在我的模板中,我需要将两个值传递给模板标签。这两个值来自 view.py
。我读 但我可以解决我的问题。
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 和网络开发的新手,所以如果问题很愚蠢,请原谅。
发送
由于您使用的是简单标签,我认为您需要将标签名称本身加载为:
{% 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>
希望有用
在template.html中使用{% load tag %}
代替{% load tags %}
我是 django 和 python 中的新人。在我的模板中,我需要将两个值传递给模板标签。这两个值来自 view.py
。我读
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 和网络开发的新手,所以如果问题很愚蠢,请原谅。 发送
由于您使用的是简单标签,我认为您需要将标签名称本身加载为:
{% 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>
希望有用
在template.html中使用{% load tag %}
代替{% load tags %}