3

我一直在寻找一个现有的纺织风格的 python 库来格式化文本供用户输入。

如果只是我输入它,那么纺织品就可以了,但是由于输入是用于 django 应用程序,它将接受用户输入并显示它,同时仍保持一些格式。

我设法在我看到的现有库中找到了这里的小漏洞。他们有时不会以应有的方式逃避事情,会让我直接输入 HTML 并且列表还在继续。

那么我可以使用哪些转换引擎的建议?

4

3 回答 3

6

如果您使用的是 Django,您可以尝试安全降价:

{% load markup %}

{{ foo|markdown:"safe" }}

您需要django.contrib.markup在您的settings.py应用程序中安装 markdown。

如果你想在保存时清理 HTML,我很幸运使用 feedparser 的清理 ( http://www.feedparser.org/ )。

import feedparser

body = feedparser._sanitizeHTML(body, 'utf8')
于 2009-11-09T20:54:03.367 回答
2

如果您正在寻找纺织解决方案:django 标记使用的 PyTextile 实际上有一个 Textile_restricted() 函数,由于某种原因,它从未进入 django.contrib.markup。您可以使用此功能提供受限纺织品。通过向您的模型添加一个调用 Textile_restricted 的方法,或者使用textile_restricted由以下代码定义的自定义模板标签:

from django import template
from django.conf import settings
from django.utils.encoding import smart_str, force_unicode
from django.utils.safestring import mark_safe

register = template.Library()

def textile_restricted(value):
    try:
        import textile
    except ImportError:
        if settings.DEBUG:
            raise template.TemplateSyntaxError("Error in {% textile %} filter: The Python textile library isn't installed.")
        return force_unicode(value)
    else:
        return mark_safe(force_unicode(textile.textile_restricted(smart_str(value))))
textile_restricted.is_safe = True

register.filter(textile_restricted)
于 2011-01-27T18:43:57.050 回答
1

您是否尝试过包含的django.contrib.markup库?

于 2009-11-09T20:52:34.780 回答