也许是世界上最好的HTML验证程序。

redsolutioncms.django-trusted-html的Python项目详细描述


Django Trusted HTML将使您的HTML正确、美观和安全。

用法歌词

假设有些用户可以将内容发布到您的站点。 你要允许他们发布格式化的文本、图像、表格和视频。 最好的方法是使用HTML作为本机格式,使用WYSIWYG编辑器作为用户界面。 所以你的用户会很容易创建内容并且会很高兴。 他们将能够从其他站点或gui编辑器复制和粘贴内容。 但你会变得不快乐。你的网站可能看起来不同质,因为 复制和粘贴内容时会出现不同的字体系列、颜色、缩进。 此外,您还可以保护您的站点不受javascript注入的影响。 以这种方式,您可能希望使用django受信任的html。

消毒

这是用于清理HTML的应用程序,来自:

  1. javascript注入
  2. 令人反感的css样式
  3. 讨厌的标签
  4. 令人反感或无法访问的链接、图像和嵌入对象

例如,您可以:

  1. 从发布到网站的用户内容中删除脚本
  2. 删除用户指定的字体和颜色以使您的网站看起来美观
  3. 允许用户发布视频,例如仅从“youtube.com”
  4. 禁用不在自己网站上排列的图像

有效的HTML

这是制作有效HTML的应用程序:

  1. 删除不正确的标记、属性、css属性和此属性不允许的css值
  2. 检查并删除断开的链接,然后对它们执行更多操作

例如,您可以:

  1. 使您的所有内容w3c有效
  2. 删除到其他网站的断开链接
  3. 从网站链接中删除主机名。

自定义

您可以:

  1. 选择一个预设值
  2. 指定验证设置
  3. 自定义验证规则

安装:

  1. trustedhtml放入django项目中的INSTALLED_APPS中。

  2. 同步数据库:

    ./manage.py syncdb
    
  3. settings.py中自定义设置。

若要了解有关设置的详细信息,请阅读trustedhtml/settings.py

要求:

Django 1.3+是必需的。 对于django<;1.3,请查看django trusted html 0.1.2。

用法:

在您的型号中:

  1. 您可以在模型中使用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。

  1. 您可以在保存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)
  1. 您可以使用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 %}
  1. 您可以只要求受信任的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摄氏度兼容性。

分类器:

Content plugins

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVA Tictoe Minimax算法不断引发异常   java弹性时间计算器字符串开关   java从表单post操作中检索值   java Selenium webdriver无法在youtube上找到元素   java如何自动填写XFA(PDF)表单?   java为什么我的秒表程序不能运行?   raspberry pi禁用java中的其他声音   java如何配置web。xml,glassfishweb。JSF的xml文件?   使用浏览器运行自动测试时出现java错误。如何运行它?   java如何阻止Swing程序在每次向JTextArea添加文本时调整组件的大小   javajavax。注射注射无效   java如何改进Solaris服务器配置   java如何在elasticsearch后端脱机时处理Hibernate搜索启动   java TCPsocket的延迟很差,除非持续流式传输