C9平台上的Django消息框架问题
Django message framework issue on C9 platform
使用 C9 中 Django 的默认配置,消息不会显示。我可以在那里看到 cookie 和消息,但在页面上看不到消息。
所以我使用了 Django's documentation 的代码片段。
如果我更改 Django 的设置以使用会话存储而不是它工作的 cookie:
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
您可以通过以下 link.
查看我的 C9 存储库
所以,我的问题是,为什么它不适用于带有 cookie 的默认存储?
Django 1.9.0 最终版
在本地环境中为我自己测试
我在我的本地环境中测试了你的代码并且运行良好。
我自己在 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 问题我刚写了一个小 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 框架,看起来像是一个错误,"feature" 或对该服务的限制:它会截断剩余的 cookie $
字符后的数据。 I ask them for an explanation.
使用 C9 中 Django 的默认配置,消息不会显示。我可以在那里看到 cookie 和消息,但在页面上看不到消息。 所以我使用了 Django's documentation 的代码片段。 如果我更改 Django 的设置以使用会话存储而不是它工作的 cookie:
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
您可以通过以下 link.
查看我的 C9 存储库所以,我的问题是,为什么它不适用于带有 cookie 的默认存储?
Django 1.9.0 最终版
在本地环境中为我自己测试
我在我的本地环境中测试了你的代码并且运行良好。
我自己在 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 问题我刚写了一个小 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 框架,看起来像是一个错误,"feature" 或对该服务的限制:它会截断剩余的 cookie $
字符后的数据。 I ask them for an explanation.