#python #django-cms
#python #django-cms
Вопрос:
Мой вариант использования — это необходимость рендеринга pdf-файла из данного плагина, хотя эта функция также может использоваться, например, для составления поискового индекса.
Ответ №1:
В кодовой базе django CMS есть cms.templatetags.render_alias_plugin
код, который не является простым, но при удалении он может выглядеть следующим образом:
def render_plugin(plugin: CMSPlugin, request: HttpRequest) -> str:
plugins = plugin.get_descendants().order_by('placeholder', 'path')
plugins = [plugin] list(plugins)
plugins = downcast_plugins(plugins, request=request)
plugins = list(plugins)
plugins[0].parent_id = None
plugins = build_plugin_tree(plugins)
renderer = get_toolbar_from_request(request).content_renderer
html: str = renderer.render_plugin(
instance=plugins[0],
context={'request': request},
editable=False,
)
return mark_safe(html)
cms_plugin = CMSPlugin.objects.get(id=cms_plugin_id)
render_plugin(cms_plugin, request)
При необходимости http-запрос также может быть подделан, пример этого можно найти здесь.