我正在使用此模板标记:

@register.filter
def php_striptags(text, allowed=""):
    soup = BeautifulSoup(text)

    # list all tags
    allowed_tags = allowed.split()

    for tag in soup.find_all(True):
        if tag.name not in allowed_tags:
            tag.unwrap()

    return soup.encode_contents().decode('utf8')

它在开发机器上工作得很好,但我在生产中遇到了这个错误:
Exception Type:     RuntimeError
Exception Value:    restricted attribute
Exception Location:     /usr/local/lib/python2.7/inspect.py in getargspec, line 813

我在webfaction上托管我的站点,运行apache和mod_wsgi。怎么了?

最佳答案

最终发现了真正的问题,这实际上是在Beautiulsoup文档中记录的:
http://www.crummy.com/software/BeautifulSoup/bs4/doc/#other-parser-problems
如果脚本在一台计算机上运行,而不是在另一台计算机上运行,可能是因为这两台计算机有不同的可用解析器库。例如,您可能在安装了lxml的计算机上开发了该脚本,然后试图在只安装了html5lib的计算机上运行它。有关这一点的原因,请参阅解析器之间的差异,并通过在BeautifulSoup构造函数中提到特定的解析器库来解决问题。
所以,做汤的时候,可以试试这样的方法:

soup = BeautifulSoup(text, "html.parser")

关于python - 自定义templatetag的受限属性仅在生产时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11774014/

10-12 03:55