也许是世界上最好的HTML验证程序。
redsolutioncms.django-trusted-html的Python项目详细描述
Django Trusted HTML将使您的HTML正确、美观和安全。
用法歌词
假设有些用户可以将内容发布到您的站点。 你要允许他们发布格式化的文本、图像、表格和视频。 最好的方法是使用HTML作为本机格式,使用WYSIWYG编辑器作为用户界面。 所以你的用户会很容易创建内容并且会很高兴。 他们将能够从其他站点或gui编辑器复制和粘贴内容。 但你会变得不快乐。你的网站可能看起来不同质,因为 复制和粘贴内容时会出现不同的字体系列、颜色、缩进。 此外,您还可以保护您的站点不受javascript注入的影响。 以这种方式,您可能希望使用django受信任的html。
消毒
这是用于清理HTML的应用程序,来自:
- javascript注入
- 令人反感的css样式
- 讨厌的标签
- 令人反感或无法访问的链接、图像和嵌入对象
例如,您可以:
- 从发布到网站的用户内容中删除脚本
- 删除用户指定的字体和颜色以使您的网站看起来美观
- 允许用户发布视频,例如仅从“youtube.com”
- 禁用不在自己网站上排列的图像
有效的HTML
这是制作有效HTML的应用程序:
- 删除不正确的标记、属性、css属性和此属性不允许的css值
- 检查并删除断开的链接,然后对它们执行更多操作
例如,您可以:
- 使您的所有内容w3c有效
- 删除到其他网站的断开链接
- 从网站链接中删除主机名。
自定义
您可以:
- 选择一个预设值
- 指定验证设置
- 自定义验证规则
安装:
将trustedhtml放入django项目中的INSTALLED_APPS中。
同步数据库:
./manage.py syncdb
在settings.py中自定义设置。
若要了解有关设置的详细信息,请阅读trustedhtml/settings.py。
要求:
Django 1.3+是必需的。 对于django<;1.3,请查看django trusted html 0.1.2。
用法:
在您的型号中:
您可以在模型中使用TrustedField
from trustedhtml.fields import TrustedTextField class MyModel(models.Model): html = TrustedTextField()
您还可以指定一个预定义的验证器
from trustedhtml.rules import full, normal, pretty from trustedhtml.fields import TrustedTextField class MyModel(models.Model): html = TrustedTextField(validator=pretty)
trustedhtml.rules.full规则将保护W3C描述的所有HTML标记和CSS样式。
trustedhtml.rules.normal规则将删除危险的html元素或可能破坏您的设计的元素。
trustedhtml.rules.pretty规则还将删除颜色、字体、对齐、边距和其他css和html属性。
顺便说一下,如果你在安装的应用程序中有django tinymce,那么你就可以使用trustedhtmlfield。
您可以在保存HTML之前验证它:
from trustedhtml.rules import pretty class MyModel(models.Model): html = models.TextField() def save(self, *args, **kwargs): self.html = pretty.validate(self.html) super(MyModel, self).save(*args, **kwargs)
或:
from trustedhtml.rules import pretty from someapp.models import SomeModel def content_save(sender, instance, **kwargs): instance.content = pretty.validate(instance.content) pre_save.connect(content_save, sender=SomeModel)
您可以使用widget来验证html:
from django import forms from trustedhtml.widgets import TrustedTextarea class FormField(forms.TextField): widget = TrustedTextarea
如果您使用的是Django Pages CMS,则只需在模板中使用TrustedWidget即可:
{% placeholder main_content with TrustedTextarea %}
或者对于旧版本的django pages cms:
{% placeholder main_content with trustedhtml.widgets.TrustedTextarea %}
如果您使用的是tinymce:
{% placeholder main_content with trustedhtml.widgets.TrustedTinyMCE %}
或者对于旧版本的django pages cms:
{% placeholder main_content with TrustedTinyMCE %}
- 您可以只要求受信任的HTML验证指定模型中的指定字段。
在某些应用程序中:
class SomeModel(models.Model): name = models.CharField(max_length=100) description = models.TextField()
在您的settings.py:
TRUSTEDHTML_MODELS = [ { 'model': 'someapp.models.SomeModel', 'fields': ['description', ], }, ]
更改日志:
- 0.1.0-初始版本
- 0.1.1-允许来自可信站点的<;iframe>;元素(用于YouTube电影)
- 0.1.2-redsolutioncms的设置在制作后执行,并在设置结束时写入设置。py
- 0.2.0-django 1.6摄氏度兼容性。