OSQA与Django 1.3.1:发布带URL文本时出错

0 投票
1 回答
518 浏览
提问于 2025-04-17 12:25

首先,我不是一个Python程序员,我只是想在Linux主机上运行OSQA的默认安装。我的主机服务商帮我安装了它,现在OSQA可以正常工作,但有一个比较严重的错误——如果我试图在文本中发布带有网址的提问/回答/评论(比如http://www.whatever.com/whatever),那么就会出现一个空的帖子(完全没有文字),同时日志中会出现这个错误:

/data/web/slovensko20.sk/web/forum/models/node.py TIME: 2012-02-05 23:29:14,944 MSG: node.py:_as_markdown:34 Caught exception 'module' object has no attribute 'etree' in markdown parser rendering Answer 'module' object has no attribute 'etree':\s Traceback (most recent call last):
  File "/data/web/slovensko20.sk/web/forum/models/node.py", line 30, in _as_markdown
    return mark_safe(sanitize_html(markdown.markdown(content, extensions=extensions)))
  File "build/bdist.linux-x86_64/egg/markdown/__init__.py", line 396, in markdown
  File "build/bdist.linux-x86_64/egg/markdown/__init__.py", line 287, in convert
  File "build/bdist.linux-x86_64/egg/markdown/treeprocessors.py", line 289, in run
    text), child)
  File "build/bdist.linux-x86_64/egg/markdown/treeprocessors.py", line 110, in __handleInline
    data, patternIndex, startIndex)
  File "build/bdist.linux-x86_64/egg/markdown/treeprocessors.py", line 237, in __applyPattern
    node = pattern.handleMatch(match)
  File "/data/web/slovensko20.sk/web/forum/markdownext/mdx_urlize.py", line 27, in handleMatch
    el = markdown.etree.Element("a")
AttributeError: 'module' object has no attribute 'etree' 

我试着在网上搜索这个问题,但没有找到解决办法。

OSQA的版本是Fantasy Island (v0.9.0) Beta 3,Django的版本我知道是1.3.1。

谢谢大家的帮助!

1 个回答

1

Python-Markdown的新版本似乎把etree/AtomicString移动到了markdown.util,所以你可以试试这个解决方法,修改mdx_urlize.py文件。

try:
    from markdown.util import etree
## replace markdown.etree with just etree

#el = markdown.etree.Element("a")
el = etree.Element("a")

## replace markdown.AtomicString with markdown.util.AtomicString

#el.text = markdown.AtomicString(text)
el.text = markdown.util.AtomicString(text)

你也可以参考这个补丁

撰写回答