0

我在 django 模板中填充了一个选择控件,但是项目选项来自外部 Web 服务,这需要一些时间来查询。有什么方法可以在视图中传递对象或“存储”数据(如 jsf)?我不想请求 Web 服务来获取对象实例。

实际上,选项在 value 选项中填充了对象 ID。我也使用了数组中对象的索引,但我不知道该怎么做。

<option value="{{ forloop.counter }}">
<option value="{{ item.id }}">
def get(self, request):
    client = ExternalServiceClient()
    products = client.all_products()
    context_data = {'product_list': products}
    return render(request, 'product-create.html', context=context_data)

我希望通过表单只查询一次外部服务并将整个对象传递给发布方法视图。

4

1 回答 1

0

也许这就是你要找的。缓存视图类似于:

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)# cache 15 minutes
def my_view(request):
    ...

为什么要缓存?那是因为您需要检查是否有任何更新。你可以在这里查看更多解释https://docs.djangoproject.com/en/2.2/topics/cache/

但是,如果您不需要检查任何更新,我认为最好将数据库存储到您的数据库中,而不是每次调用都向外部 API 发出任何请求。

于 2019-04-12T05:41:57.017 回答