2

C9 の Django のデフォルト設定では、メッセージは表示されません。そこに Cookie とメッセージが表示されますが、ページにメッセージが表示されませんでした。そこで、 Django のドキュメントの抜粋コードを使用します。Cookie ではなくセッション ストレージを使用するように Django の設定を変更すると、次のように動作します。

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

このリンクをたどると、私の C9 リポジトリを見ることができます。

それで、私の質問は、Cookie を使用したデフォルトのストレージではなぜ機能しないのですか?

Django バージョン 1.9.0 最終版

4

1 に答える 1

3

ローカル環境で自分自身をテストする

あなたのコードをローカル環境でテストしたところ、問題なく動作しました。

C9 での自分自身のテスト

問題を掘り下げると、c9 が$シンボルでクッキーを切り捨てていることがわかります。それを確認するために、この時点でいくつかの変数値を出力しました。

    data = self.request.COOKIES.get(self.cookie_name)
    print 'cookies->', self.request.COOKIES
    print 'data->', data
    messages = self._decode(data)
    print 'messages->', messages

結果は次のとおりです。

cookies-> {'messages': '00060c532edb4c08c778df44306c21e7aacfc15f$'}
data-> 00060c532edb4c08c778df44306c21e7aacfc15f$
messages-> None
--> 0
--> ['messages']  

確認中

それがc9の問題であることを確認するために、私は小さなphpプログラムを書きました:

Set cookie page

<?php  
setcookie("c", "00060c532edb4c08c778df44306c21e7aacfc15f$also_this");   
?>

Read cookie page

Cookie value:    
<?php 

   echo $_COOKIE['c'];

?>

Results

Cookie value: 00060c532edb4c08c778df44306c21e7aacfc15f

答え

次に、問題は django フレームワークではなく C9 プラットフォームにあるようです。そのサービスのバグ、「機能」、または制約のように見えます$。文字の後に残りの Cookie データを切り捨てます。説明を求めます

于 2016-01-16T14:51:52.627 に答える