2010-11-22 11 views
8

मैं कर रहा हूँ कैशिंग एचटीएमएल कुछ टेम्पलेट्स उदा .:मैं टेम्पलेट कैश का उपयोग कैसे करूं? - Django

{% cache 900 stats %} 
    {{ stats }} 
{% endcache %} 

मैं कैश निम्न स्तर लाइब्रेरी का उपयोग कर संचालित कर सकता हूँ के भीतर? जैसे

html = cache.get('stats') 

मैं वास्तव में टेम्पलेट कैशिंग :)


कोई भी विचार पर कुछ सुक्ष्म नियंत्रण की आवश्यकता है? सभी को धन्यवाद! : डी

उत्तर

2

cache templatetag के लिए कोड को देखते हुए, कुंजी इस तरह उत्पन्न होता है:

args = md5_constructor(u':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on])) 
cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest()) 

ताकि आप अपने दृश्य कैश सीधे प्राप्त करने के लिए कुछ simliar बना सकते हैं: आपके मामले में, आप ' किसी भी vary_on पैरामीटर का उपयोग नहीं कर रहे हैं ताकि आप md5_constructor पर खाली तर्क का उपयोग कर सकें।

+0

धन्यवाद, मैं 'कोशिश की cache.get ('template.cache.stat_table.d41d8cd98f00b204e9800998ecf8427e')' लेकिन यह सिर्फ वापस नहीं – RadiantHex

+1

मैं नहीं कर सके के रूप में वापस जब तक मैं अलग-अलग के लिए आपूर्ति नहीं करता तब तक यह काम नहीं करता है - एक खाली md5_constructor में डालकर कुंजी का एक अलग बेस 64 हिस्सा दिया जाता है। http://stackoverflow.com/questions/4821297/django-how-to-tell-if-a-template-fragment-is-already-cached/4821681#4821681 – Ryan

6

यह कैसे मैं अपने प्रोजेक्ट में टेम्पलेट कैश का उपयोग है:

from django.utils.hashcompat import md5_constructor 
from django.utils.http import urlquote 

def someView(request): 
    variables = [var1, var2, var3] 
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables])) 
    cache_key = 'template.cache.%s.%s' % ('table', hash.hexdigest()) 

    if cache.has_key(cache_key): 
     #do some stuff... 

तरह से मैं cache टैग का उपयोग, मेरे पास है:

{% cache TIMEOUT table var1 var2 var3 %} 

आप शायद सिर्फ एक खाली सूची में उत्तीर्ण होना variables पर। तो, अपने variables और cache_ key दिखेगा की तरह: इस के लिए

variables = [] 
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables])) 
    cache_key = 'template.cache.%s.%s' % ('stats', hash.hexdigest()) 
संबंधित मुद्दे