0

テンプレートで作成するdjangoのテンプレートタグまたは回避策はありast.literal_eval(some_str)ますか?

これを行うには、新しいテンプレート タグを作成する必要がありますか? この場合、そのテンプレート タグはどのようになりますか?

私が尋ねている理由は、python 印刷された辞書を逆シリアル化する方法をここで見つけることができますか?

4

1 に答える 1

4

いいえ

なぜそのような特定のタグがあり、なぜそれが使用されるのでしょうか?

簡単に追加できます

# file: literal_eval.py

import ast

def literal_eval(value):
    return ast.literal_eval(value)

from django import template
register = template.Library()
register.filter('literal_eval', literal_eval)

テンプレートでこのように使用できます

{% load literal_eval %}

{{ some_str|literal_eval }}

それが「なぜ?」という疑問につながります。あなたはこれで何をしますか?

編集:OPは「varcharとして保存されたpython dictをデシリアライズしたい」と言いました。その場合、テンプレートはそれを行う場所ではなく、最初にテキストをdictに変換してからテンプレートに渡します。

dictを保存することはreprシリアライズする方法でliteral_evalはなく、使用することはdictをデシリアライズする方法ではなく、json.dumpsdictをデータベースに入れjson.loads、それをdictに戻すために使用するようなフォーマットを使用する方法ではありません。ピクルスも使用できますが、お勧めしません。

于 2012-10-31T18:55:04.003 に答える