2

使用 C9 中 Django 的默认配置,不会显示消息。我可以在那里看到 cookie 和消息,但在页面上看不到消息。所以我使用了Django 文档的截断代码。如果我将 Django 的设置更改为使用会话存储而不是它的 cookie:

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

您可以通过以下链接查看我的 C9 存储库。

所以,我的问题是,为什么它不适用于带有 cookie 的默认存储?

Django 1.9.0 最终版

4

1 回答 1

3

在本地环境中测试我自己

我在本地环境中测试了您的代码并且运行良好。

在 C9 为我自己的测试

挖掘问题,我意识到 c9 是在$符号处截断你的 cookie。为了检查它,我现在只输出一些变量

    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

回答

然后,您的问题似乎出在 C9 平台而不是 django 框架上,看起来像是对该服务的错误、“功能”或约束:它会在$字符后截断剩余的 cookie 数据。我请他们解释

于 2016-01-16T14:51:52.627 回答