首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python的轻量级标记语言

Python的轻量级标记语言
EN

Stack Overflow用户
提问于 2009-08-03 18:02:54
回答 3查看 1.4K关注 0票数 4

编写Python web应用程序时,我想创建一个文本区,用户可以在其中输入轻量级标记语言的文本。文本将被导入到html模板并在页面上查看。现在,我使用以下命令来创建textarea,它允许用户输入任何(html)文本:

代码语言:javascript
运行
复制
my_text = cgidata.getvalue('my_text', 'default_text')
ftable.AddRow([Label(_('Enter your text')),
               TextArea('my_text', my_text, rows=8, cols=60).Format()])

我如何改变这一点,只允许一些(安全的,最终是轻量级的)标记?欢迎所有的建议,包括消毒剂,只要它容易与Python集成。

EN

Stack Overflow用户

发布于 2009-08-03 20:42:24

这个简单的清理函数使用白名单,与python-html-sanitizer-scrubber-filter的解决方案大致相同,但也允许限制属性的使用(因为您可能不希望有人使用style属性):

代码语言:javascript
运行
复制
from BeautifulSoup import BeautifulSoup

def sanitize_html(value):
    valid_tags = 'p i b strong a pre br'.split()
    valid_attrs = 'href src'.split()
    soup = BeautifulSoup(value)
    for tag in soup.findAll(True):
        if tag.name not in valid_tags:
            tag.hidden = True
        tag.attrs = [(attr, val) for attr, val in tag.attrs if attr in valid_attrs]
    return soup.renderContents().decode('utf8').replace('javascript:', '')
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1223741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档