0

私の Django テンプレート ページが何もレンダリングしない理由を誰かが理解するのを手伝ってくれますか?

Python Requests ( http://docs.python-requests.org/en/latest/ ) を使用して、外部 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:

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

1 に答える 1

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)

または、これを a に変更する方がはるかに適切です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
于 2013-10-15T05:01:02.743 に答える