如何将对象从选择控件传递到Django中的另一个视图

时间:2019-04-12 02:25:54

标签: django

我正在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)

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

1 个答案:

答案 0 :(得分: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/

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