轻松使用bleach与Django模型和模板
项目描述
Bleach 是一个Python模块,它接受任何HTML输入,并返回有效、清理过的HTML,其中只包含允许的HTML标签、属性和样式的子集。 django-bleach 是一个Django应用程序,使得使用 bleach 变得非常简单。
安装
通过 pip 安装 django-bleach
pip install django-bleach
将 django-bleach 添加到您的 INSTALLED_APPS
INSTALLED_APPS = [ # ... 'django_bleach', # ... ]
为允许的标签、属性和样式选择一些合理的默认值;以及遇到未知标签时的行为。这些都是可选的,默认使用 bleach 的默认值。请参阅 bleach 文档
# Which HTML tags are allowed BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a'] # Which HTML attributes are allowed BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', 'style'] # Which CSS properties are allowed in 'style' attributes (assuming # style is an allowed attribute) BLEACH_ALLOWED_STYLES = [ 'font-family', 'font-weight', 'text-decoration', 'font-variant'] # Strip unknown tags if True, replace with HTML escaped characters if # False BLEACH_STRIP_TAGS = True # Strip comments, or leave them in. BLEACH_STRIP_COMMENTS = False
为 bleach 字段选择默认的小部件。这默认为 django.forms.Textarea,但您可能希望将其替换为 WYSIWYG 编辑器或其他类似工具
# Use the CKEditorWidget for bleached HTML fields BLEACH_DEFAULT_WIDGET = 'wysiwyg.widgets.WysiwygWidget'
我在我的项目中使用 django-ckeditor,但您可以使用任何您喜欢的工具。
用法
在您的模型中
django-bleach 提供了三种创建漂白输出的方式。包括用户可编辑的自动清洗的 HTML 内容的最简单方法是使用 BleachField 模型字段
# in app/models.py
from django import models
from django_bleach.models import BleachField
class Post(models.Model):
title = models.CharField()
content = BleachField()
# ...
BleachField 接受以下参数,以自定义 bleach 的输出。有关它们的使用,请参阅 bleach 文档
allowed_tags
allowed_attributes
strip_tags
strip_comments
css_sanitizer
以下参数将在不久的将来被弃用
allowed_styles
除了 bleach 特定的参数外,BleachField 模型字段还接受所有正常的字段属性。在幕后,它是一个 TextField,接受与默认 TextField 相同的参数。
BleachField 模型字段在将值保存到数据库之前对其进行清理,并将其标记为安全,以便可以在模板中立即渲染,而无需进一步干预。
在模型表单中,默认情况下,BleachField 模型字段由 BleachField 表单字段表示。
在您的表单中
提供了一个 BleachField 表单字段。此字段清洗来自用户的 HTML 输入,并将安全、干净的 HTML 提供给您的 Django 应用程序,返回的值被标记为安全,可以直接在模板中渲染。
在您的模板中
如果您需要在模板中打印某处的内容,可以使用 bleach 过滤器
{% load bleach_tags %}
{{ some_unsafe_content|bleach }}
如果过滤器没有参数,则使用您应用程序设置中定义的默认设置。您可以通过指定它们作为过滤器的参数来覆盖允许的标签
{{ some_unsafe_content|bleach:"p,span" }}
还有一个 bleach_linkify,它使用 linkify 函数将 bleach 转换为链接
此函数将文本中看起来像 URL、域名和电子邮件地址的字符串转换为链接,同时保留
字符串中的现有链接
属性中的 URL
电子邮件地址
django-bleach-3.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 766405a32b877a5beb6b377ace0d8bbe2a7d4d6304f04542aa14fd74b14398a7 |
|
MD5 | f369c0582631c0669059448fcd4eeb92 |
|
BLAKE2b-256 | 8cd9e50567bf752da972c4eb1e294af9692b656444341d115545e041c38e921c |
django_bleach-3.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d9117ca08c182ee20daaf99abbf800154db5cdbcb66ef1252dd7bb542dcf19d |
|
MD5 | 96c3b4ca25b3356cf6e2d90051728acb |
|
BLAKE2b-256 | e4fde2cad28cfb86329e120486c1739ed66505cc1f089a28014e9322978e4a77 |