【问题标题】:Django message framework issue on C9 platformC9平台上的Django消息框架问题
【发布时间】:2016-04-21 09:24:04
【问题描述】:

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

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

您可以通过关注link 来查看我的 C9 存储库。

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

Django 版本 1.9.0 最终版

【问题讨论】:

    标签: django messages django-1.9 c9.io


    【解决方案1】:

    在本地环境中进行自己的测试

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

    在 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 框架有关,看起来像是对该服务的错误、“功能”或约束:它会在 $ 字符之后截断剩余的 cookie 数据。 I ask them for an explanation.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-30
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多