2013-10-15 63 views
0

有人可以幫我找出爲什麼我的Django模板頁面不會渲染任何東西嗎?Django模板頁面輸出Nothing

我正在使用Python請求()從外部URL檢索JSON數據。我使用.json()解碼數據。這可以像我期望的那樣從命令行執行時發揮作用,但是當它在視圖中沒有任何作用時。

當我運行服務器時,頁面是空白的。它沒有標題,沒有「測試」打印,沒有。

我的模板:

<html> 
<head><title>Offer List</title></head> 

<body> 
<p>Testing</p> 
{% load dictparser %} 
{% for offers in network1_offers %} 
{% autoescape off %} 
    <div> 
     <p>name: {{ offers|lookup:"name" }}</p> 
     <p>pay: {{ offers|lookup:"payout" }}</p> 
     <p>description: {{ offers|lookup:"description" }}</p> 
    </div> 
{% empty %} 
    <li>Sorry, no surveys available.</li> 
{% endautoescape %} 
{% endfor %} 

</body> 
</html> 

筆者認爲:

class OffersList(View): 
    template_name="generic_app/offers.html" 
    def load_offers(request): 
     """ 
     import example network offers. 

     """ 
     user = request.user 
     user_agent = request.META['HTTP_USER_AGENT'] 
     amparams = {'user_subid':user.sub_id, 'useragent':user_agent, 'user_ip':user.ip_address} 
     examplenetwork = requests.get('http://example.com/api-get.php?pubid=00000&key=000000000000&mode=offers&incent=1', data=amparams) 
     exampleoffers= examplenetwork.json() 
     """ 
     import example network 2 offers. 

     """ 
     clparams = {'subid':user.sub_id, 'ua':user_agent, 'geoip':user.ip_address} 
     examplenetwork2 = requests.get('http://www.examplenetwork2.com/blahblah', data=clparams) 
     exampleoffers2 = examplenetwork2.json() 
     render(request, 'generic_app/offers.html', {'network1_offers':exampleoffers, 'network2_offers':exampleoffers2}) 

的網址:

url(r'^dashboard/offers$', OffersList.as_view(), name="offers"), 

回答

1

你看到這一點,因爲你還沒有定義怎麼去的load_offers()方法在您的視圖中,目前您的load_offers()方法只是一種漂浮在 你的班。

使用基類View附帶了你需要實現它的方法,例如

class OfferView(View): 

    template_name = "generic_app/offers.html" 

    def get(self, request, *args, **kwargs): 
     return load_offers(request) 

或更好的變化這一個TemplateView(因爲這是它到底是什麼)。

class OfferView(TemplateView): 

    template_name = "generic_app/offers.html" 

    def get_context_data(self, **kwargs): 
     context = super(OfferView, self).get_context_data(**kwargs) 
     context['offers'] = load_offers(self.request) 
     return context 
+0

謝謝你指點我正確的方向。我無法在第二個示例中使用請求(load_offers(request)。您是否推薦了一種特殊的方式來完成TemplateViews的目標? – Iohannes

+0

您可以通過'self.request'訪問它 - 更新了應答因爲我忘了添加它。 –

+0

完美,非常感謝。 – Iohannes