Django的一个简单自定义字段,可以安全地呈现Markdown并将其存储在数据库中。
django-markdownfield的Python项目详细描述
django markdownfield
一个简单的Django自定义字段,可以安全地呈现Markdown并将其存储在数据库中。在
您的文本存储在MarkdownField
中。保存模型后,django markdownfield将
解析Markdown,呈现它,用bleach清理它,然后存储
结果在RenderedMarkdownField
中显示给最终用户。在
django markdownfield还实现了EasyMDE 在管理视图中的编辑器,使使用标记更容易。在
实施
实现django markdownfield很简单。请参见下面的示例。在
fromdjango.dbimportmodelsfrommarkdownfield.modelsimportMarkdownField,RenderedMarkdownFieldfrommarkdownfield.validatorsimportVALIDATOR_STANDARDclassPage(models.Model):text=MarkdownField(rendered_field='text_rendered',validator=VALIDATOR_STANDARD)text_rendered=RenderedMarkdownField()
请在您的Django配置中设置SITE_URL
,它将用于检测
外部链接。在
要禁用EasyMDE编辑器,请参阅下面的修订行。在
text=MarkdownField(rendered_field='text_rendered',use_editor=False,use_admin_editor=True)
在模板中使用
要在模板中使用呈现的标记,只需使用您在上面创建的RenderedMarkdownField()
就像下面的模型。这个字段应该用safe
过滤器标记为安全的,以确保它
显示正确。在
{{ post.text_rendered | safe }}
验证器
django markdownfield附带了许多验证器,用于处理和清理 降价引擎的输出
验证器标准
frommarkdownfield.validatorsimportVALIDATOR_STANDARD
此验证器将删除标准降价未使用的所有标记。它还自动链接
输出中的任何URL,添加class="external"
,rel="nofollow noopener noreferrer"
,以及
target="_blank"
指向它确定为外部的任何url。在
验证程序\u CLASSY
frommarkdownfield.validatorsimportVALIDATOR_CLASSY
这个验证器与VALIDATOR_STANDARD
基本相同,但它允许您在
链接和图像。这对于创建按钮和其他增强的链接非常有用。在
验证器_NULL
frommarkdownfield.validatorsimportVALIDATOR_NULL
这个验证器根本不调用bleach来清理输出。 这是对用户输入不安全。它允许在降价输入中使用任意(不安全)的HTML。在
创建自定义验证器
要创建自定义验证器,只需创建markdownfield.validators.Validator
的实例
数据类。下面是一个例子。在
frommarkdownfield.validatorsimportValidator# allows only bold and italic textVALIDATOR_COMMENTS=Validator(allowed_tags=["b","i","strong","em"],allowed_attrs={},linkify=False)
您还可以在markdownfield.validators
中找到一组标准的标记安全标记和属性,并扩展
那个。在
frommarkdownfield.validatorsimportValidator,MARKDOWN_TAGS,MARKDOWN_ATTRS# allows all standard markdown features,# but also allows the class to be set on images and linksVALIDATOR_CLASSY=Validator(allowed_tags=MARKDOWN_TAGS,allowed_attrs={**MARKDOWN_ATTRS,'img':['src','alt','title','class'],'a':['href','alt','title','name','class']})
许可证
这个软件是在麻省理工学院许可下发布的。在
Copyright (c) 2019 Luke Rogers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- 项目
标签: