2012-08-05 81 views
1

不知道这是一个django问题还是只是一个python问题。我试图通过接受来自返回多个值的函数的值来使缓存工作。如何从Django缓存中分配并返回多个值?

目前该页面是给我这个错误的heavy_view功能:“‘NoneType’对象不是可迭代”

反正有获得“柜台,college_user,name_college_list = cache.get(cache_key)”在线工作?然后检查它是否为空。谢谢!

#Views.py 

def filter_results(): 
    #some code here 

    return counter, college_user, name_college_List  


def heavy_view(request): 
    cache_key = 'facebookcache' 
    cache_time = 180 # time to live in seconds 
    counter, college_user, name_college_list = cache.get(cache_key) 
    if not cache.get(cache_key): 
     result = filter_results() # some calculations here 
     cache.set(cache_key, result, cache_time) 
    return result 

回答

0

你可以做这样的事情:

result = cache.get(cache_key) 
if not result: 
    result = filter_result() 
    cache.set(cache_key, result, cache_time) 

counter, college_user, name_college_list = result 
+0

最有效的答案。谢谢! – Jack 2012-08-12 16:33:57

0

这是一个Python的事情

当你做

counter, college_user, name_college_list = cache.get(cache_key) 

第一次没有价值将在那里 - 返回>None。 does not work?

result = cache.get(cache_key) 
if result is None: 
    result = filter_results() 
    cache.set(cache_key, result, cache_time) 
else: 
    counter, college_user, name_college_list = result 
return result