8

私はこのようなものを持っていた小さなフラスコアプリを作っています:

@app.route('/bye')
def logout():
    session.pop('logged_in', None)
    flash('Adiós')
    return redirect('/index')

言うまでもなく、アプリケーションを実行して「/bye」に移動すると、UnicodeDecodeError が返されました。さて、アプリケーションを再起動した後でも、基本テンプレート (メッセージをレンダリングする) を拡張するすべてのページで同じ unicodedecodeerror が表示されます。ソースコードでそのフラッシュを削除しても、常に同じ dump() を使用します。私が考えることができるのは、何ががらくたですか?助けてください。

愚かなセッションキャッシュか何かをクリアするために、コンピューターを再起動する必要がありました。

4

3 に答える 3

19

flash() は実際に session['_flashes'] というセッションを作成すると思います。このコードはこちらを参照してください。したがって、おそらく次のいずれかを行う必要があります。

clear/delete the cookie 

また

session.pop('_flashes', None)
于 2013-10-22T18:25:23.450 に答える
0

Flask フラッシュは、メッセージが正常に「消費」されるまで、メッセージをセッション Cookie に保存します。この場合、UnicodeDecodeError ( https://wiki.python.org/moin/UnicodeDecodeError ) が発生すると、メッセージは消費されないため、エラーが何度も発生します。

私の解決策は、ブラウザからCookieを削除することでした

ローカリゼーションを使用しているときに問題が発生したため、次のような翻訳オブジェクトをインストールして原因を解決しました。

trans = gettext.GNUTranslations(...)
trans.install(unicode=True)

私のpythonソースファイルと"Content-Type: text/plain; charset=UTF-8\n"翻訳ファイル(.pot)にUTF-8エンコーディングがあります

于 2013-11-29T10:24:37.487 に答える