您可能需要一個custom template tag來照顧您的循環,並可能將信息存儲在用戶的會話中。您也可以使用緩存後端進行此操作,但這取決於您。它可能是這個樣子:
LAST_CDN=4
cdn_format = "http://cdn%s.mydomain.com/%s"
@register.simple_tag(takes_context=True)
def cdn_url(context, url):
request = context['request'] ## Assumes that request is in your context.
current_cdn = request.session.get('current_cdn', 0)
current_cdn += 1
if current_cdn > LAST_CDN:
current_cdn=1
cdn_list = request.session.get('cdn_list', {})
if cdn_list.get(url, None) is not None:
return cdn_format % (cdn_list.get(url), url,)
else:
cdn_list[url] = current_cdn
request.session['cdn_list'] = cdn_list
return cdn_format % (current_cdn, url,)
謝謝!我會做這樣的事情。我絕對會做的是直接在上下文中存儲信息,而不是會話。 – 2011-05-12 17:31:43
每個請求都有不同的上下文,這意味着您失去了瀏覽器端緩存。您可能想要使用django緩存或會話來保持跨請求的同步。 – 2011-05-12 17:41:38