Иногда есть смысл оптимизировать код,работающий лишь несколько миллисекунд:
- Middleware
- Context processors
- Template tags в базовом шаблоне
Делайте их ленивыми
Вы не знаете наверняка, пригодится ли где-нибудь то, что вы насчитали в своем context processor’е. Поэтому middleware и context processors должны быть ленивыми!from django.utils.functional import lazy
class LocationMiddleware(object):
def process_request(self, request):
request.location = lazy(get_location, dict)(request)
def get_location(request):
g = GeoIP()
remote_ip = request.META.get(REMOTE_ADDR)
return g.city(remote_ip)
http://www.slideshare.net/MoscowDjango/django-12897658 слайды 33 и 34http://stackoverflow.com/questions/8563812/lazy-load-of-data-from-a-context-processor/8564778#8564778
No comments:
Post a Comment