django模板呈现“< bound method ..”而不是上下文变量

时间:2012-11-22 15:33:11

标签: python django templates html-safe

我有一个模板' cart_summary.html'当我在另一个模板{% include 'cart/cart_summary.html' %}上显示为包含时,它呈现正常。

但是当我直接从视图函数(由ajax调用)渲染它时,我的上下文变量不会按预期呈现:

# views.py
def add_to_cart(request):
    ...
    cart = request.session['cart']
    ...
    return render_to_response('cart/cart_summary.html', {'cart': cart})

我的cart_summary.html模板 -

<a src="{% url cart-page pk=cart.pk %}">
    <span> CART ({{ cart.count }}) &pound;{{ cart.get_total }} </span>
    <img id="cart_icon" src="{{ STATIC_URL }}images/cart_icon.tiff">
</a>

这是我回到浏览器的一些东西 -

<span> CART (&lt;bound method ManyRelatedManager.count of &lt;django.db.models.fields.related.ManyRelatedManager object at 0x106bfa150&gt;&gt;) &pound; </span>
<img id="cart_icon" src="images/cart_icon.tiff">

我需要做些什么才能获得正确呈现的字符串?

3 个答案:

答案 0 :(得分:6)

您的方法是返回方法而不是值。

可能会返回queryset.count而不是queryset.count()

答案 1 :(得分:2)

经过几个小时的调试,一些非常糟糕的代码(我的代码),我发现了错误。它实际上是在Cart模型中。编写了count函数,以便它返回一个方法而不是方法的输出

def count(self):
    return self.items.count

应该是

def count(self):
    self.items.count()

由于它被转换为html安全代码(我和我的代码中的所有其他错误),我被抛弃了气味。

答案 2 :(得分:0)

试试这个......

from django import template
return render_to_response('cart/cart_summary.html', {'cart': cart}, context_instance = template.RequestContent(request))