3

ユーザーが入力できるようにテキストをフォーマットするために、テキスタイルのスタイルで既存のpythonライブラリを探していました。

私だけが入力した場合、テキスタイルだけでも問題ありませんでしたが、入力は、ユーザー入力を取得して表示するdjangoアプリ用であるため、フォーマットを維持しながら.

私が見た既存のライブラリには、小さな抜け穴がありました。彼らは時々、本来あるべき方法で物事をエスケープせず、そのまま HTML を入力させ、リストは続きます。

では、使用できる変換エンジンの推奨事項は何ですか?

4

3 に答える 3

6

Djangoを使用している場合は、安全なマークダウンを試すことができます。

{% load markup %}

{{ foo|markdown:"safe" }}

django.contrib.markupマークダウンをsettings.pyアプリにインストールする必要があります。

保存時にHTMLをサニタイズしたい場合は、feedparserのサニタイズ( http://www.feedparser.org/ )を使用して幸運を祈ります。

import feedparser

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

テキスタイル ソリューションを探している場合: django マークアップが使用する PyTextile には実際にはテキスタイル_restricted() 関数があり、何らかの理由で django.contrib.markup にはなりませんでした。この機能を使用して、制限されたテキスタイルを提供できます。texture_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 に答える