哟!检查你的html!

django-html-validator的Python项目详细描述


django html验证器

Build Status

一个工具来验证从django应用程序生成的html。 与Python3兼容。

许可证:MPL 2

警告!

如果不下载本地vnu.jar文件(见下文),它将使用 validator.nu将HTML发送到那里

如果使用htmlvalidator来验证测试,则html不太可能包含 任何敏感或可识别的个人信息,但如果使用中间件 有一个潜在的风险。

安装

首先,非常简单:

pip install django-html-validator

注意,它不会做任何事情,除非你选择你想如何使用它,你也 需要使用设置显式启用它。

基本上,您可以选择如何使用它:

  • 作为中间件
  • 在您的单元测试中(从技术上讲,它们是django中的集成测试)

如果您选择将其设置为中间件并相应地启用它,它将 也为测试中的每个呈现模板运行。不仅仅是当你运行 服务器。

设置

独立于您如何使用htmlvalidator您需要打开它。 默认情况下不打开。设置为:

HTMLVALIDATOR_ENABLED=True

它的作用是将所有验证错误打印到stdout。 但这并不能阻止死刑的执行。即使有错误。

使其在有任何验证时立即停止执行 在您的设置中打开此项时出错:

HTMLVALIDATOR_FAILFAST=True

现在,如果客户端出现任何验证错误,您将 引发htmlvalidator.exceptions.ValidationError异常。

同样,如果您将其作为中间件运行并在其上设置了此设置 将引发请求中的异常。

当遇到验证错误和警告时,htmlvalidator将 将HTML转储到一个文件中,并在一个同名文件中转储错误,但 而是使用扩展名.txt。默认情况下,它会将此转储到 系统tmp目录和名为htmlvalidator的子目录。 例如/tmp/htmlvalidator/。如果要覆盖该更改:

HTMLVALIDATOR_DUMPDIR='~/validationerrors/'# default it /tmp
<>无论您设置了什么,目录不需要存在,但它的父节点确实存在。

默认情况下,当htmlvalidator遇到它存储的验证错误时 HTMLVALIDATOR_DUMPDIR中的相关html文件和一个文件 扩展名为.txt,位于同一目录中。或者你可以让 它将验证错误和警告直接转储到stdout上,并显示:

HTMLVALIDATOR_OUTPUT='stdout'# default is 'file'

设置vnu.jar路径

默认情况下,所有验证都是通过将带有http post的html发送到 html5.validator.nu

这不仅给他们的服务器带来了很大的压力。尤其是如果你有 很多测试。它也很慢,因为它取决于网络延迟。很多 更好的方法是从他们的 latest release打开 GitHub page

您可以这样设置:

HTMLVALIDATOR_VNU_JAR='~/downloads/vnu.jar'

这也需要安装Java,因为.jar文件就是这样 在命令行上执行。

请注意,调用这个vnu.jar文件非常慢。超过2秒 不稀奇。另一种更快的方法是使用vnu.jar运行本地web 验证程序的实例,并通过not设置指向要使用该验证的验证 HTMLVALIDATOR_VNU_JAR然后改为这样做:

HTMLVALIDATOR_VNU_URL='http://localhost:8888/'

验证器的本地web实例通常可以通过以下方式启动:

java -cp vnu.jar nu.validator.servlet.Main 8888

在运行服务器期间进行验证

执行HTML验证的一种方法是在运行 服务器。例如,使用./manage.py runserver

为此,您需要启用中间件。在设置模块中, 附加htmlvalidator.middleware.HTMLValidatorMIDDLEWARE_CLASSES为例:

ifHTMLVALIDATOR_ENABLED:MIDDLEWARE_CLASSES+=("htmlvalidator.middleware.HTMLValidator",)

也可以直接无条件地添加到MIDDLEWARE_CLASSES 除非启用,否则它不会执行任何操作(加载除外),请参见 上面关于HTMLVALIDATOR_ENABLED的说明,了解更多信息。

另外,如果启用HTMLVALIDATOR_FAILFAST,则在运行 htmlvalidator中间件一旦出现异常 看到一些无效的html。

在测试中验证html

假设你有一个做测试的类。默认情况下,它已经有一个 self.client用于发出请求的。你要做的就是 替换为htmlvalidator.client.ValidatingClient 上课。例如:

fromdjango.testimportTestCasefromhtmlvalidator.clientimportValidatingClientclassMyAppTests(TestCase):defsetUp(self):super(MyAppTests,self).setUp()self.client=ValidatingClient()deftest_homepage(self):response=self.client.get('/')self.assertEqual(response.status_code,200)

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

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar