添加WordPress-like短代码,以增强Django中的Markdown编写功能的实用工具。
项目描述
# Django的Markdown短代码
提供在内容中使用WordPress-like "短代码"的能力,这些短代码将被渲染为HTML。
这里的想法是扩展Markdown编写功能。例如,在内容主体的流程中渲染一个更复杂的组件,显示特色内容 - 或者简单地渲染一个全宽Vimeo视频。
由于这些短代码将非常项目特定,因此此包不附带大量预定义的短代码。
相反,它提供了一个注册系统(通过一个小装饰器),短代码处理程序和一个模板过滤器以方便使用。
## 安装
通过pip安装
pip安装django-markdown-shortcodes
请在Django项目的设置中将`markdown_shortcodes`添加到`INSTALLED_APPS`中。
## 定义短代码
预期的短代码函数名称应以`shortcode_`开头,后跟在内容中出现的字符串/名称。
以下示例创建了对`[[youtube]]`短代码的支持。
定义处理函数,使用`shortcode`装饰器将函数注册为处理程序
from markdown_shortcodes import shortcode
@shortcode
def shortcode_youtube(*args)
return render_to_string("shortcodes/youtube.html", {
'id': args[0],
'title': args[1] if len(args) > 1 else '',
'alternate_uri': args[2] if len(args) > 2 else '',
})
创建一个模板文件
<div class="shortcode-block">
<div class="fluid-iframe -ratio-16-9">
<iframe src="//www.youtube.com/embed/#{{ id }}"
标题:{{ title }}
frameborder="0"
webkitallowfullscreen
mozallowfullscreen
allowfullscreen>
此视频需要具有框架功能的浏览器。
{% if alternate_uri %}
<a href="{{ alternate_uri }}">查看 {{ title }} 的替代内容</a>
{% else %}
<a href="https://www.youtube.com/watch?v=#{{ id }}">在 YouTube 上观看 {{ title }}</a>
{% endif %}
</iframe>
</div>
</div>
您的内容
您知道 Whoa McTuggins 吗?我看到了他关于准备番茄的采访。这改变了我的一生
[[youtube XTJIGGBN8l4 "对番茄切块的激动人心的探索"]]
现在我几乎每周都要准备酸辣酱!
在您的内容模板中,如下所示(`expand_shortcodes` 由本包提供)
...
{% load shortcodes %}
<div class="Post-BodyText -u-awesome">
{{ post.body|expand_shortcodes|safe|your_markdown_filter }}
</div>
...
提供在内容中使用WordPress-like "短代码"的能力,这些短代码将被渲染为HTML。
这里的想法是扩展Markdown编写功能。例如,在内容主体的流程中渲染一个更复杂的组件,显示特色内容 - 或者简单地渲染一个全宽Vimeo视频。
由于这些短代码将非常项目特定,因此此包不附带大量预定义的短代码。
相反,它提供了一个注册系统(通过一个小装饰器),短代码处理程序和一个模板过滤器以方便使用。
## 安装
通过pip安装
pip安装django-markdown-shortcodes
请在Django项目的设置中将`markdown_shortcodes`添加到`INSTALLED_APPS`中。
## 定义短代码
预期的短代码函数名称应以`shortcode_`开头,后跟在内容中出现的字符串/名称。
以下示例创建了对`[[youtube]]`短代码的支持。
定义处理函数,使用`shortcode`装饰器将函数注册为处理程序
from markdown_shortcodes import shortcode
@shortcode
def shortcode_youtube(*args)
return render_to_string("shortcodes/youtube.html", {
'id': args[0],
'title': args[1] if len(args) > 1 else '',
'alternate_uri': args[2] if len(args) > 2 else '',
})
创建一个模板文件
<div class="shortcode-block">
<div class="fluid-iframe -ratio-16-9">
<iframe src="//www.youtube.com/embed/#{{ id }}"
标题:{{ title }}
frameborder="0"
webkitallowfullscreen
mozallowfullscreen
allowfullscreen>
此视频需要具有框架功能的浏览器。
{% if alternate_uri %}
<a href="{{ alternate_uri }}">查看 {{ title }} 的替代内容</a>
{% else %}
<a href="https://www.youtube.com/watch?v=#{{ id }}">在 YouTube 上观看 {{ title }}</a>
{% endif %}
</iframe>
</div>
</div>
您的内容
您知道 Whoa McTuggins 吗?我看到了他关于准备番茄的采访。这改变了我的一生
[[youtube XTJIGGBN8l4 "对番茄切块的激动人心的探索"]]
现在我几乎每周都要准备酸辣酱!
在您的内容模板中,如下所示(`expand_shortcodes` 由本包提供)
...
{% load shortcodes %}
<div class="Post-BodyText -u-awesome">
{{ post.body|expand_shortcodes|safe|your_markdown_filter }}
</div>
...
项目详情
关闭
django-markdown-shortcodes-1.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 911973c3076fc41fab8fdea9e3031fe20d81314e573d74d0f20a557a9720327e |
|
MD5 | 2c34a94f8cfd81113a034e54bda2859f |
|
BLAKE2b-256 | 2217cbd3da56af041e8dbcfc548fe6db1c20936d1d9cf13bf56240ec0dcbdee2 |