我正在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)
我希望仅通过表单查询一次外部服务,然后将整个对象传递给发布方法视图。
答案 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发出任何请求。