Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Двойная (каскадная) шаблонизация

Двойная (каскадная) шаблонизация

Сергей Еремин (oknardia.ru) @ Moscow Python №42

" Бывает, что часть данных в БД обновляется редко, запросы к ним «тяжелые», но при каждом обращении клиента их требуется отображать. Спикер расскажет, как сделать, чтобы «тяжёлый» шаблон при первом вызове создавал другие «легкие» шаблоны с «пререндером» редко обновляемых данных. При последующих вызовах исполняются «легкие» шаблоны, что позволяет драматически снизить нагрузку на сервер".

Видео: http://www.moscowpython.ru/meetup/42/double-template/

Moscow Python Meetup

January 19, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Как применить в хозяйстве: {% templatetag openvariable %} и {%

    templatetag closevariable %} а еще {% templatetag openblock %} и {% templatetag closeblock %}
  2. на всякий случай: {% templatetag openblock %} → {% {%

    templatetag closeblock %} → %} {% templatetag openvariable %} → {{ {% templatetag closevariable %} → }}
  3. почти не меняются крайне редко может быть меняются но всем

    пофиг раз в год, если повезёт меняются иногда
  4. from django.template.loader import render_to_string import os def view4report(request): # простые,

    легкие и быстрые вычисления и запросы data_light = 2*2 # | Dim = {"DATA_LIGHT": data_light} # <--------+ if not os.path.isfile("C:/path_to_project/templates/LightTemplate.html"): # сложные, тяжелые и медленные вычисления и запросы data_hard = 3.1416926**3**4 # | Dim.update({"DATA_HARD": data_hard}) # <------+ Result = render_to_string("HardTemplate.html", Dim) file = open("C:/path_to_project/templates/LightTemplate.html", 'w') file.write(Result.encode('utf-8')) file.close() response = render(request, "LightTemplate.html", Dim) return response
  5. <p>Часто обновляемые и «лёгкие» данные:<br/> {% templatetag openvariable %} DATA_LIGHT

    {% templatetag closevariable %}</p> <p>Редко обновляемые и «тяжёлые» данные:<br/> {{ DATA_HARD }}</p> <p>Часто обновляемые и «лёгкие» данные:<br/> {{ DATA_LIGHT }}</p> <p>Редко обновляемые и «тяжёлые» данные:<br/> 1.8631971713448156e+40</p> LightTemplate.html HardTemplate.html
  6. Повторим: {% templatetag openblock %} → {% {% templatetag closeblock

    %} → %} {% templatetag openvariable %} → {{ {% templatetag closevariable %} → }} И помним про: вложенные шаблоны