我正在使用此模板标记:
@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/