使用以下代码时:
MARKDOWN_KWARGS = {
'extensions': [
'footnotes',
'attr_list',
'headerid',
'extra',
'codehilite',
],
'safe_mode': 'escape',
我收到以下错误:
Django Version: 1.6.11
Exception Type: ValueError
Exception Value:
Element 'html_block' was not found in OrderedDict
Exception Location: /usr/local/lib/python2.7/site-packages/markdown/odict.py in index, line 149
Python Executable: /usr/local/bin/python
Python Version: 2.7.9
为什么?我能做些什么来修复它?你知道吗
通过删除“safe\u mode”:“escape”解决
您在Python Markdown中发现了一个bug。具体来说,将Update:这不是问题所在,因为这种情况是accounted for。没有错误,只是如下所述的用户错误。你知道吗safe_mode
设置为“escape”和使用“extra”扩展之间存在不兼容。在引擎盖下,当safe_mode
设置为“escape”时,解析器不会插入查找所有HTML块的预处理器(称为“htmlu块”)。之后,任何HTML都会被转义,因为它没有被特别标记为已知的安全HTML。但是,“extra”扩展试图修改“html\u block”预处理器的行为(以启用“markdown=1”行为),并且因为您在safe_mode
中,所以该预处理器不存在并且失败。有趣的是,我注意到你的“额外”和“脚注”都列为扩展名。然而,“脚注”的扩展是“额外”的一部分。换句话说,通过加载“extra”,您已经得到了“footnotes”,不需要再次加载。“属性列表”也是如此。这就是导致错误的原因。尝试两次加载相同的扩展。实际上,“extra”为您提供的扩展的完整列表可以在here中找到:
作为“extra”的一部分,通过单独加载每个扩展而不是全部加载,唯一的问题是更少的键入和“markdown=1”特性(允许在原始HTML块中解析markdown)。有趣的是,如果您正在使用
safe_mode
,那么“extra”的“markdown=1”特性对您没有任何用处。因此,您不必加载“extra”,只需加载上面列出的每个扩展,然后safe_mode
仍然可以工作。你知道吗也就是说,
safe_mode
正在deprecated并且在Python Markdown的下一个版本中将不再可用。如发行说明中所述,在通过标记将不受信任的内容转换为HTML之后,不应使用safe_mode
,而应通过HTML清理程序(如Bleach)传递不受信任的内容:如果这样做,那么在解析来自不受信任源的markdown时仍然可以获得一些安全性,您不会遇到上述错误,并且您的代码将在Python markdown的未来版本中继续工作。你知道吗
相关问题 更多 >
编程相关推荐