跳转到主要内容

将模板中的特定块渲染为字符串。

项目描述

Django Render Block

https://img.shields.io/pypi/v/django-render-block.svg https://github.com/clokep/django-render-block/actions/workflows/main.yml/badge.svg

从Django模板中渲染特定块标签的内容。适用于任意模板继承,即使块在子模板中定义但不在父模板中。通常它的工作方式类似于Django的render_to_string,但允许您指定要渲染的块。

功能

  • 从模板渲染特定块

  • 完全支持Django模板引擎

  • 部分支持Jinja2引擎:它目前不处理extends标签。

要求

Django Render Block支持Django 4.2、5.0和5.1,在Python 3.8、3.9、3.10、3.11和3.12上(有关特定Django版本支持的Python版本,请参阅Django文档)。

示例

test1.html

{% block block1 %}block1 from test1{% endblock %}
{% block block2 %}block2 from test1{% endblock %}

test2.html

{% extends 'test1.html' %}
{% block block1 %}block1 from test2{% endblock %}

并且从 Python 虚拟环境中

>>> from render_block import render_block_to_string
>>> print(render_block_to_string('test2.html', 'block1'))
'block1 from test2'
>>> print(render_block_to_string('test2.html', 'block2'))
'block2 from test1'

它还可以接受一个作为 dict 的上下文(就像 render_to_string),在 test3.html

{% block block3 %}Render this {{ variable }}!{% endblock %}

并且从 Python 中

>>> print(render_block_to_string('test3.html', 'block3', {'variable': 'test'}))
'Render this test!'

API 参考

API 简单,并试图与内置的 render_to_string API 保持一致。

render_block_to_string(template_name, block_name, context=None, request=None)

template_name

要加载和渲染的模板名称。如果是一个模板名称列表,Django 使用 select_template() 而不是 get_template() 来查找模板。

block_name

从上述模板中要渲染的块名称。

context

用作模板渲染上下文的 dict。可以为 Django 模板提供一个 Context 对象。

context 是可选的。如果没有提供,将使用空上下文。

request

用于渲染模板的请求对象。

request 是可选的,并且仅适用于 Django 模板。如果同时提供了 context 和 request,则将使用 RequestContext 而不是 Context

异常

render_to_string 一样,这将引发以下异常

TemplateDoesNotExists

如果在 template_name 中指定的模板无法加载时引发。

TemplateSyntaxError

如果加载的模板包含无效的语法时引发。

还可以引发两种附加的错误

BlockNotFound

如果在模板中找不到由 block_name 给定的块时引发。

UnsupportedEngine

如果使用了除 Django 后端以外的模板后端时引发。

贡献

如果您发现了一个错误或对 Django Render Block 的改进有想法,请 提交一个 issue 或提供 pull request!查看 issue 列表 以获取要工作的想法。

归属

这是基于一些来源

变更日志

0.10 (2024年7月15日)

与 0.10b1 无变化。

0.10b1 (2024年7月1日)

错误修复

  • 修复了渲染模板时的异常传播问题。由 @yaakovLowenstein 贡献。(#52)

  • 修复了在多个扩展模板中渲染块的问题。(#56)

维护

  • 支持 Python 3.11 和 3.12。(#44, #55)

  • 停止支持 Python 3.7。(#44)

  • 支持 Django 4.2、5.0 和 5.1。(#44, #55)

  • 停止支持 Django < 3.2;Django 4.0;Django 4.1。(#44, #55)

  • 添加类型提示并配置 mypy。(#54)

0.9.2 (2022年10月18日)

维护

0.9.1 (2021年12月15日)

维护

  • 支持 Python 3.10。(#33)

  • 修复了生成 wheels 时为空的打包问题。由 @cordery 贡献。(#35)

0.9 (2021年12月14日)

维护

  • 停止支持 Django 3.0。(#31)

  • 支持 Django 3.2 和 4.0。(#27#31)

  • 将持续集成切换到 GitHub Actions。(#26#28)

  • 将打包配置更改为使用 setup.cfg 中的 setuptools 声明式配置。(#32)

0.8.1 (2020年10月15日)

错误修复

  • 修复了 v0.8 版本中的一个回归问题,其中 Context 无法重复使用。由 @evanbrumley 贡献。(#25)

0.8 (2020年10月6日)

错误修复

  • render_block_to_string 现在可以选择接受一个 request 参数。如果提供,则使用 Django 模板引擎渲染时,使用 RequestContext 而不是 Context。由 @bblanchon 贡献。(#21)

维护

  • 停止支持 Python 3.5,支持 Python 3.9。(#22)

0.7 (2020年7月13日)

维护

  • 停止支持 Django < 2.2。(#18)

  • 支持 Django 3.0 和 3.1。(#18#20)

  • 停止支持 Python 2.7。(#19)

  • 支持 Python 3.8。(#18)

0.6 (2019年5月8日)

改进

  • render_block_to_string 现在可以选择接受一个 request 参数。如果提供,则使用 Django 模板引擎渲染时,使用 RequestContext 而不是 Context。由 @vintage 贡献。(#15)

维护

  • 支持 Django 1.11,2.1 和 2.2。(#9#11#17)

  • 支持 Python 2.7,3.5,3.6 和 3.7。(#9#17)

  • 修复了 PyPI 上的 README 的渲染问题。由 @mixxorz 贡献。(#10)

0.5 (2016年9月1日)

错误修复

  • 修复了继承模板并在父模板中找到要渲染的块,但在子模板中覆盖其中一部分的严重问题。(#8)

0.4 (2016年8月4日)

改进

  • 初始支持使用Jinja2模板引擎。见README了解注意事项。(#3

维护

  • 支持Django 1.10。(#5

  • 支持Python 3。(#6

0.3.1(2016年6月1日)

维护

  • 重构以使其更加通用(以支持多个模板引擎)。

0.3(2016年5月27日)

  • 大部分重写。

  • 支持Django 1.8和1.9

    • 保护不同的模板后端。

    • 使用每个节点的内部API。

    • 移除了context_instance参数。

    • 支持调用{{ block.super }}

0.2.2(2011年1月10日)

0.2.1(2010年8月27日)

0.2(2008年8月4日)

  • Django Snippet 942更新版本(zbyte64)。

  • 改进了包含功能

    1. 简化/更好地处理“extends”块标签

    2. 搜索If/Else块

    3. 更少的代码

    4. 允许传递模板列表,这更接近于render_to_response的行为

0.1(2008年5月22日)

项目详情


下载文件

下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

django_render_block-0.10.tar.gz (10.0 kB 查看哈希值

上传时间

构建分发

django_render_block-0.10-py3-none-any.whl (9.0 kB 查看哈希值

上传时间 Python 3

由以下支持