0

我正在使用 python 的请求库从烧瓶 REST API 中读取并在 Django 视图中引用它。

我遇到的问题是,在测试来自 Chrome 插件的 API 调用时,我看到了刷新的响应,而在 Django 模板中,当页面刷新时,我没有看到任何数据变化。

我有一个小库,其中包括对 API 的 GET 调用:



    def container_list():
        api_auth = get_auth()
        server_url = get_server_url() + '/v1/containers'
        r = requests.get(server_url , auth = api_auth)
        return r.json()

然后我在视图中阅读此内容:



    from django.views.generic import ListView
    from lib.ApiClient import image_list, container_list
    from django.core.cache import cache

    class ContainerList(ListView):
        template_name = 'containers.html'
        cache.clear() # Attempt at clearing the cache
        queryset=container_list()

然后将其提供给模板:



    {% for container in object_list %}
        {% for key,value in container.items %}
            {{key}} : {{ value }}
        {% endfor %}
    {% endfor %} 

关于如何让模板刷新的任何建议?

4

2 回答 2

1

您使用ListView不正确。您为属性分配queriset了不是QuerySet. 这意味着您只获取一次数据(在导入时views.py)。

每次对视图提出请求时,它都会使用queryset属性中的数据。如果要在每个请求上获取新数据,则需要覆盖get_queryset方法。就像是:

class ContainerList(ListView):
    template_name = 'containers.html'

    def get_queryset(self):
        return container_list()

这将获取每个请求的数据。

于 2014-08-13T18:00:33.927 回答
0

如果我没记错的话,您将需要一个信号处理器来监视更改,当它注意到更改时,它将通过对模板的 AJAX 调用进行更新,并替换为新数据。

于 2014-08-08T21:02:48.857 回答