Как сгенерировать файл (html) из представления в Django
У меня есть Django-driven сайт с несколькими приложениями, которые динамически обновляются, но не слишком часто, например, "О компании", "Наши услуги" и т.д.. Они имеют двухуровневую структуру страниц, которую я хочу отразить в верхнем всплывающем меню (см. рисунок).
Я мог бы сделать его в виде пользовательского simple_tag, вызываемого каждый раз из шаблона base.html. Он бы генерировал меню каждый раз, когда пользователь открывает или перезагружает страницу, но думаю это очень затратно, так как структура приложения меняется редко (скажем, раз в год).
Вместо этого я хочу, чтобы HTML-код меню генерировался каждый раз при обновлении структуры приложения. Он будет храниться как статический HTML файл, поэтому мой base.html будет включать меню как готовый кусок кода.
Есть ли рецепты, как сгенерировать HTML файл из представлений (CreateView, UpdateView, DeleteView)?
Вы можете использовать функцию render_to_string
из django, которая генерирует html-результат из шаблона:
from django.template import loader
content = loader.render_to_string(template_name, context)
content содержит html-результат рендеринга. При необходимости вы можете добавить объект запроса в функцию render_to_string
.
документацию о функции можно найти здесь: https://docs.djangoproject.com/en/4.1/topics/templates/#django.template.loader.render_to_string