2017-09-27 20 views
0

をリダイレクト表示されません。しかし、return redirect('accounts:login')return render(request, 'accounts/login.html')に変更すると、メッセージが表示されます。リダイレクト中にメッセージが表示されないようにするにはどうすればよいでしょうか?Djangoのメッセージは後に、私は私の見解では、コードのこの部分を持っている

そして、メッセージ保存のために、私が使用しています:助けを

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage' 

感謝を。

+0

あなたがログアウトすると、セッションが削除されるという問題があります。別のメッセージストレージバックエンドを使用する場合は機能しますか? –

+0

@DanielRosemanログアウトコールを削除しようとしました。それはまだ同じです。 – Nirmal

答えて

2

壁に当って2日後に問題が判明しました。それは私のサイトのセッション設定でした。ローカル(127.0.0.1)で開発されたときに、これは明らかに私のセッションを拾っていなかった

# Session settings 
SESSION_COOKIE_DOMAIN = '.mydomain.com' 
SESSION_COOKIE_SECURE = True 

、およびローカル環境が安全ではなかったことから、クッキーが同様に設定されていませんでした。これに対処するために

は、次の手順を取らなければならなかった:

  1. は、セキュアなクッキーを変更し、最後にrunserver local.mydomain.com:8000
  2. runserverコマンドを変更後、開発マシン
  3. 127.0.0.1 local.mydomain.comのためのホストエントリを追加します。設定をSESSION_COOKIE_SECURE = not DEBUG

に設定してから、0123でローカルバージョンにアクセスする必要がありました。

これは誰でも同じ問題を解決するのに役立ちます。

+0

これはrender()とredirect()の動作が異なるのはなぜですか? – sureshvv

+0

@sureshvv 'render()'がメッセージを設定するのと同じビューで呼び出されているので、変数は読み込まれたものとして見えます。 'redirect() 'によって呼び出されるページではなく、メッセージ値を取得するためにストレージに依存しなければなりません。 – Nirmal

+0

しかし、セッションで正しく設定されていれば、どちらも同じようにうまくいくはずです。 – sureshvv

関連する問題