2012-11-22 54 views
2

我有一個模板'cart_summary.html',當它顯示爲包含在另一個模板{% include 'cart/cart_summary.html' %}中時呈現正常。django模板呈現「<綁定方法..」而不是上下文變量

然而,當我直接從取景功能(通過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"> 

我該怎麼做需要做什麼來獲得正確呈現的字符串?

+0

使用渲染,而不需要對選擇render_to_response修復{{STATIC_URL}}。 – jpic

+0

用render()替換render_to_response()調用會導致服務器500錯誤。 –

+1

因爲你沒有這樣做。如果您在視圖中輸入'',cart.count()'會發生什麼情況? – jpic

回答

6

您的方法正在返回一個方法而不是一個值。

也許它返回queryset.count代替queryset.count()

+0

謝謝。這也幫助了我 – Sevenearths

0

嘗試......

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

謝謝Raunak。添加上下文實例不會更改輸出。它仍然沒有處理我的上下文變量。 –

2

幾個小時的調試一些引人注目的差代碼(我的代碼)後,我發現了錯誤。它實際上是在Cart模型中。 count函數是這麼寫的,它正在返回一個方法,而不是一種方法

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

的輸出應該是

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

我被揭去的事實它被轉化爲氣味HTML安全代碼,(和我的代碼中的所有其他錯誤)。

相關問題