2016-06-14 11 views
-1

フラスコ内のAjaxポストリクエストでwtfフォームを処理したいと思います。json.dump throw "TypeError:{...}はJSONシリアライズ可能ではありません"フォームの検証エラー

form = LoginForm(request.form) 
if form.validate(): 
    ..... 
    .... do something 
    ..... 
form.errors['iserror'] = True 
return json.dumps(form.errors) 

しかし、私はこのエラーを既定の昇給
はTypeError(のrepr(O)+ "で

ファイル "/usr/lib/python3.4/json/encoder.py"、ライン173を取得JSONをシリアル化できません ")
TypeError:lユーザー名または電子メールアドレスが必要です。 JSONシリアライズ可能ではありません

json.dumpsで使用する前に、form.errorsで何らかの処理を行う必要がありますか?

form.error
{ 'ISERROR' の出力:真、 'パスワード':[。L'パスワードが必要ですが、 '] 'csrf_token':[' CSRFトークン行方不明 '] 'ユーザ名':[ 'ユーザー名または電子メールアドレスが必要です。']

+1

にフォームの検証を変更した後、微細な作品、何form.errors文字列は次のようになりん - おそらくばかな質問が、あなたはJSONはそれでよろしいですか?上記の文字列を投稿できますか?どうも。 – picus

+0

はパスワードのエラーメッセージの前に "L"と表示され、ユーザー名が問題です。私はそれがいくつかの処理を必要とするだろうと思う。 – jas

+0

問題を指摘してくれてありがとう。私の検証メッセージに問題がありました。私は質問に答えました – jas

答えて

0

私の検証メッセージは問題でした。なぜ私はメッセージの前に_それが問題を引き起こしていたのか分かりません。

password = PasswordField(_("Password"), validators=[ 
      DataRequired(message=_("A Password is required."))]) 

は好奇心から

password = PasswordField(("Password"), validators=[ 
      DataRequired(message=("A Password is required."))]) 
+1

アンダースコアは、[翻訳](https://docs.djangoproject.com/en/1.9/topics/i18n/translation/)を扱う 'gettext'関数の最も一般的な別名です。関数の戻り値は、jsonライブラリがシリアル化する方法を知っているオブジェクトではありません。あなたは 'str()'を使ってメッセージを文字列にすることができます。 – Anonymous

関連する問題