2

我有一个模板 ' 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">

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

4

3 回答 3

7

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

可能它正在返回queryset.count而不是queryset.count()

于 2012-11-23T13:30:04.430 回答
2

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

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

本来应该

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

我被它转换为 html 安全代码(以及我的代码中的所有其他错误)的事实所抛弃。

于 2012-11-23T10:34:21.727 回答
0

试试这个...

from django import template
return render_to_response('cart/cart_summary.html', {'cart': cart}, context_instance = template.RequestContent(request))
于 2012-11-22T16:48:26.023 回答