Datasette渲染Markdown插件
项目描述
datasette-render-markdown
Datasette 插件,用于渲染Markdown。
安装
在Datasette相同的环境中安装此插件,以启用此新功能
datasette install datasette-render-markdown
用法
您可以使用metadata.json
文件中的插件配置显式列出希望将其视为Markdown的列。
添加一个"datasette-render-markdown"
配置块,并使用"columns"
键列出您希望将其视为Markdown值的列
{
"plugins": {
"datasette-render-markdown": {
"columns": ["body"]
}
}
}
这将导致任何表中的body
列被视为Markdown并安全地使用Python-Markdown渲染。生成的HTML随后通过Bleach运行,以避免XSS安全问题的风险。
将此保存到metadata.json
,然后使用--metadata
标志运行Datasette以加载此配置
$ datasette serve mydata.db --metadata metadata.json
配置块可以在顶层使用,也可以仅应用于特定的数据库或表。以下是如何将其应用于news.db
数据库中的entries
表
{
"databases": {
"news": {
"tables": {
"entries": {
"plugins": {
"datasette-render-markdown": {
"columns": ["body"]
}
}
}
}
}
}
}
以下是如何将其应用于news.db
数据库中每个表的每个body
列
{
"databases": {
"news": {
"plugins": {
"datasette-render-markdown": {
"columns": ["body"]
}
}
}
}
}
匹配命名约定的列
此插件还可以在匹配特定命名约定的任何列中渲染Markdown。
默认情况下,名称以_markdown
结尾的列将被渲染。
您可以使用以下查询尝试此功能
select '# Hello there
* This is a list
* of items
[And a link](https://github.com/simonw/datasette-render-markdown).'
as demo_markdown
您可以使用"patterns"
配置键配置不同的通配符模式列表。以下是如何渲染以_markdown
或_md
结尾的列
{
"plugins": {
"datasette-render-markdown": {
"patterns": ["*_markdown", "*_md"]
}
}
}
要完全禁用通配符列匹配,请将插件元数据配置中的"patterns": []
设置。
Markdown 扩展
该插件使用的 Python-Markdown 库 支持扩展,包括捆绑的和第三方扩展。这些扩展可以用来启用额外的 Markdown 功能,如 表格支持。
您可以使用插件元数据配置中的"extensions"
键来配置扩展支持。
由于扩展可能引入新的 HTML 标签,您还需要将这些标签添加到由Bleach 清理器允许的标签列表中。您可以使用"extra_tags"
键来完成此操作,并使用"extra_attrs"
允许额外的 HTML 属性。有关更多信息,请参阅Bleach 文档。
以下是启用 Markdown 表格支持的步骤
{
"plugins": {
"datasette-render-markdown": {
"extensions": ["tables"],
"extra_tags": ["table", "thead", "tr", "th", "td", "tbody"]
}
}
}
GitHub 风格的 Markdown
启用 GitHub 风格的 Markdown(如果您正在使用 github-to-sqlite 从 GitHub 导入的数据,则非常有用)要复杂一些。
首先,您需要安装 py-gfm 包
$ pip install py-gfm
请注意,py-gfm
有一个错误,导致它锁定在 Markdown<3.0
,因此如果您正在使用它,您应该在安装datasette-render-markdown
之前安装它,以确保您得到兼容的版本。
现在您可以按如下方式配置。请注意,扩展名称为mdx_gfm:GithubFlavoredMarkdownExtension
,您需要允许列表中包含几个额外的 HTML 标签和属性
{
"plugins": {
"datasette-render-markdown": {
"extra_tags": [
"hr",
"br",
"details",
"summary",
"input"
],
"extra_attrs": {
"input": [
"type",
"disabled",
"checked"
],
},
"extensions": [
"mdx_gfm:GithubFlavoredMarkdownExtension"
]
}
}
}
<input type="" checked disabled>
属性对于在问题描述中渲染复选框是必需的。
模板中的 Markdown
该插件引入了一个新的模板标签:{% markdown %}...{% endmarkdown %}
- 可以用于在您的 Jinja 模板中渲染 Markdown。
{% markdown %}
# This will be rendered as markdown
{% endmarkdown %}
您可以使用{% markdown %}
标签的属性来启用扩展和允许列表中添加额外的标签和属性
{% markdown
extensions="tables"
extra_tags="table thead tr th td tbody"
extra_attrs="p:id,class a:name,href" %}
## Markdown table
First Header | Second Header
------------- | -------------
Content Cell | Content Cell
Content Cell | Content Cell
<a href="https://www.example.com/" name="namehere">Example</a>
<p id="paragraph" class="klass">Paragraph</p>
{% endmarkdown %}
extensions=
和extra_tags=
属性接受空格分隔的值列表。
extra_attrs=
属性接受空格分隔的tag:attr1,attr2
值列表 - 每个标签可以指定一个或多个应允许的属性。
您还可以使用{{ render_markdown(...) }}
函数,如下所示
{{ render_markdown("""
## Markdown table
First Header | Second Header
------------- | -------------
Content Cell | Content Cell
Content Cell | Content Cell
""", extensions=["tables"],
extra_tags=["table", "thead", "tr", "th", "td", "tbody"])) }}
建议使用{% markdown %}
标签,因为它避免了在 Markdown 内容中转义引号的需要。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分发
构建的发行版
datasette-render-markdown-2.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 97eca47769ad81a1d225a0c32efe50a2f6f54fbeaa97b883855dd0591ba5b8f5 |
|
MD5 | 0b4c3ee4593bc7e90cf7fb439c2fefef |
|
BLAKE2b-256 | 4f993074dc4a0129d2dbe12f8492daa392c47d927b380e9d96ffd781b22f887b |
datasette_render_markdown-2.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6e72641b11568afd61e10ec2813c07661cdb1f26ce2935982b30860392bf94dc |
|
MD5 | 4f63cf0bd7a48868d97939f655f48c85 |
|
BLAKE2b-256 | c371c504d5fa9786601f6292386bd230a641d64faf891d3d91e8481b4f082937 |