1

djangoフォームを使用しています。フォームエラーを次のようにテンプレートに渡します。

return render_to_response(template_name, {'form':form})

テンプレートでは、これをjs辞書に変換する必要があるので、使用しました。

eval({{form.errors|safe}})

しかし、テンプレートでform.errorsを使用する場合は常に、辞書ではなくhtml形式を取得します。djangoフォームが辞書ではなく文字列として表示されるのはなぜですか。form.errorsの辞書バージョンを使用する方法はありますか。

4

2 に答える 2

5

エラーコレクションの ErrorDict.__unicode__ メソッドが。の値を返すため、順序付けされていないリストとして表示されますErrorDict.as_ul

辞書のデフォルトの文字列表現を元に戻したい場合は、それを辞書にキャストし直しますdict(form.errors)。これで、HTML形式の順序付けされていないリストを取得できなくなります。

アップデート

JSでPythonディクショナリを表現しようとしている場合は、シンプルに保ち、ディクショナリオブジェクトをJSONにエンコードします。だからあなたの見解のどこか:

from django.utils import simplejson

errors = simplejson.dumps(form.errors)
于 2012-08-01T06:52:03.117 に答える
0

djangoのソースを見ると、エラーのタイプはdjango.forms.util.ErrorDictである必要があります。

これには、あなたのケースに役立つ可能性のある次の2つのメソッドがあります:as_textとas_ul。

evaldjangoテンプレート内からこのメソッドをどのように使用できたかわかりません。私の知る限り、有効な標準のdjangoテンプレートタグでさえありません。

dictを手動でループし、それに応じてjavascriptオブジェクトリテラルを印刷/生成する必要があると思います。

于 2012-08-01T06:19:30.880 に答える