带有SITE_ID的Django @cache_page(站点框架)

时间:2014-11-17 17:59:51

标签: python django caching

我正在使用Django的网站框架来运行多个网站,每个SITE_ID都基于当前的城市数据。

任何方式@cache_page以便Django根据SITE_ID缓存正确的视图?

这不起作用,因为Django将在所有网站上返回相同的缓存值,而不管SITE_ID

@cache_page(24 * 60 * 60)
def my_page(request):
   myview = table.objects.filter(city_id=settings.SITE_ID)
   #...

1 个答案:

答案 0 :(得分:0)

你可以这样做:this line谈论这个

@cache_page(24*60*60, key_prefix="%s" % settings.SITE_ID) 
def my_page(request):
   myview = table.objects.filter(city_id=settings.SITE_ID)
   #...

或更好地缓存更易于控制的查询集

def my_page(request):
   cities = cache.get('cities_%s' % settings.SITE_ID)
   if not cities: 
       cities = table.objects.filter(city_id=settings.SITE_ID)
       cache.set('cities_%s' % settings.SITE_ID, cities, 24*60*60)
   #...
   #...