2010-11-22 26 views
8

Tôi bộ nhớ đệm html trong vòng vài mẫu ví dụ .:Tôi làm cách nào để truy cập bộ nhớ cache mẫu? - Django

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

Tôi có thể truy cập vào bộ nhớ cache bằng cách sử dụng thấp thư viện mức? ví dụ.

html = cache.get('stats') 

tôi thực sự cần phải có một số kiểm soát hạt mịn ở phía trên mẫu bộ nhớ đệm :)


Bất kỳ ý tưởng? Cảm ơn tất cả mọi người! : D

Trả lời

2

Nhìn vào mã cho cache templatetag, chìa khóa được tạo ra như thế này:

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()) 

vì vậy bạn có thể xây dựng một cái gì đó simliar theo quan điểm của bạn để có được bộ nhớ cache trực tiếp: trong trường hợp của bạn, bạn' không sử dụng bất kỳ thông số vary_on nào để bạn có thể sử dụng đối số trống cho md5_constructor.

+0

nhờ việc này, tôi đã cố gắng 'cache.get ('template.cache.stat_table.d41d8cd98f00b204e9800998ecf8427e') 'nhưng nó chỉ trả lại như Không – RadiantHex

+1

Tôi couldn Không nhận được điều này để làm việc, trừ khi tôi cung cấp [] cho differ_on - đặt trong một md5_constructor rỗng đã cho một phần base64 khác nhau của khóa. http://stackoverflow.com/questions/4821297/django-how-to-tell-if-a-template-fragment-is-already-cached/4821681#4821681 – Ryan

6

Đây là cách tôi truy cập vào các mẫu bộ nhớ cache trong dự án của tôi:

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... 

Con đường tôi sử dụng thẻ cache, tôi có:

{% cache TIMEOUT table var1 var2 var3 %} 

Bạn có thể chỉ cần vượt qua một danh sách trống đến variables. Vì vậy, bạn variables và cache_ key sẽ trông giống như:

variables = [] 
    hash = md5_constructor(u':'.join([urlquote(var) for var in variables])) 
    cache_key = 'template.cache.%s.%s' % ('stats', hash.hexdigest()) 
Các vấn đề liên quan