在django模板中捕获输出的微库
django-capture-tag的Python项目详细描述
在django模板中捕获输出的微库。
例如,这对于:
- 在网页中重复页面标题,例如<title>标记和面包屑。
- 重复社交媒体标签的内容。
- 在多个位置重用缩略图输出。
- 从扩展模板获取配置数据。
安装
从pypi安装模块:
pip install django-capture-tag
将包添加到INSTALLED_APPS:
INSTALLED_APPS+=('capture_tag',)
在模板中加载标记:
{%loadcapture_tags%}
语法
提供以下选项:
{%capture%}...{%endcapture%} # output in {{capture}}{%capturesilent%}...{%endcapture%} # output in {{capture}} only {%captureasvarname%}...{%endcapture%} # output in {{varname}}{%captureasvarnamesilent%}...{%endcapture%} # output in {{varname}} only
示例用法
要捕获社交媒体标签:
{%loadcapture_tags%}<head> ... {# Allow templates to override the page title/description #}<metaname="description"content="{%captureasmeta_description%}{%blockmeta-description%}{%endblock%}{%endcapture%}"/><title>{%captureasmeta_title%}{%blockmeta-title%}Untitled{%endblock%}{%endcapture%}</title>{# display the same value as default, but allow templates to override it. #}<metaproperty="og:description"content="{%blockog-description%}{{meta_description}}{%endblock%}"/><metaname="twitter:title"content="{%blocktwitter-title%}{{meta_title}}{%endblock%}"/></head>
从扩展模板获取配置:
# base.html {%loadcapture_tags%} # read once {%captureashome_urlsilent%}{%blockhome_url%}{%url'app:index'%}{%endblock%}{%endcapture%} # reuse twice. <ahref="{{home_url}}"class="btn page-top">Back to home</a><ahref="{{home_url}}"class="btn page-bottom">Back to home</a> # child.html {%extends"base.html"%}{%blockhome_url%}{%url'user:profile'%}{%endblock%}
注意
当一个值只使用一次时,不需要这个包。 在这种情况下,只需将{% block .. %}放在替换内容的正确位置。 所有常见的django模板标记都支持as variable语法, 例如{% url 'app:index' as home_url %}或{% trans "Foo" as foo_label %}。