2017-08-01 18 views
0

オブジェクトの価格を設定するために動的なフォームセット(クリスピーフォームを使用)があります。私はこれらのオブジェクトの名前をユーザーに表示する必要があるので、どのオブジェクトが価格を設定しているかを知る必要があります。ただし、これらの名前はユーザー自身によって別の形式で選択されます。このためにHTMLクラスを使用するのが最も明白です(レイアウト内)が、これはDjangoテンプレートをレンダリングするためのものです。ユーザーがテンプレートコードを追加すると、セキュリティ上の問題が発生します。クリスピーフォームレイアウトにテンプレート以外のHTMLを追加

私が考えていた解決策の1つは、手動で「エスケープ」することです。 {% verbatim XXXXXX %}タグで囲み、XXXXXXを安全にランダムな文字列で置き換えるか、または中かっこをそのHTML文字コードで置き換えてください。しかし、これらのソリューションはどちらもかなりハッキーで、間違いやセキュリティ上の問題が起きやすいようです。

クリスピーフォームレイアウトに純粋なHTMLを挿入するためのクリーンな方法はありますか?

答えて

1

あなた自身のクリスピーなレイアウトオブジェクトを作成するのは本当に簡単です。フォームに挿入する文字列を返すレンダリング関数が必要です。次のように独自のHTMLクラスを書くことができます:

class SafeHTML: 
    def __init__(self, html): 
     self.html = html 

    def render(self, *args, **kwargs): 
     return str(self.html) 
関連する問題