C9平台上的Django消息框架问题

时间:2016-01-15 17:49:59

标签: django messages django-1.9 c9.io

使用C9中Django的默认配置,不会显示消息。我可以在那里看到cookie和消息,但我在页面上看不到消息。 所以我使用Django's documentation的剪切代码。 如果我更改Django的设置以使用会话存储而不是cookie工作:

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

您可以按照此link

查看我的C9存储库

所以,我的问题是,为什么它不能与带有cookie的默认存储一起使用?

Django版本1.9.0最终

1 个答案:

答案 0 :(得分:3)

在本地环境中测试我自己

我在我的本地环境中测试了您的代码,运行正常。

在C9

测试我自己的

深入研究我发现c9是在$符号截断你的cookie。要检查它,我只需在this point输出一些变量值。

    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问题,我刚刚写了一个小程序:

Set cookie page

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

Read cookie page

Cookie value:    
<?php 

   echo $_COOKIE['c'];

?>

Results

Cookie value: 00060c532edb4c08c778df44306c21e7aacfc15f

答案

然后,似乎你的问题是C9平台而不是django框架,看起来像一个bug,&#34;功能&#34;或对该服务的约束:它在$个字符后截断剩余的cookie数据。 I ask them for an explanation