我一直在寻找一个现有的纺织风格的 python 库来格式化文本供用户输入。
如果只是我输入它,那么纺织品就可以了,但是由于输入是用于 django 应用程序,它将接受用户输入并显示它,同时仍保持一些格式。
我设法在我看到的现有库中找到了这里的小漏洞。他们有时不会以应有的方式逃避事情,会让我直接输入 HTML 并且列表还在继续。
那么我可以使用哪些转换引擎的建议?
我一直在寻找一个现有的纺织风格的 python 库来格式化文本供用户输入。
如果只是我输入它,那么纺织品就可以了,但是由于输入是用于 django 应用程序,它将接受用户输入并显示它,同时仍保持一些格式。
我设法在我看到的现有库中找到了这里的小漏洞。他们有时不会以应有的方式逃避事情,会让我直接输入 HTML 并且列表还在继续。
那么我可以使用哪些转换引擎的建议?
如果您使用的是 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')
如果您正在寻找纺织解决方案: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)
您是否尝试过包含的django.contrib.markup库?