0

有人可以帮我弄清楚为什么我的 Django 模板页面不会呈现任何东西吗?

我正在使用 Python 请求 ( 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(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 回答