如何在Google App Engine / Django中开始使用Sessions?

时间:2009-08-13 13:17:31

标签: python django google-app-engine

我是Python / GAE / Django的新手。我用GAE得到的东西本身没有内存会话...但我想我想要一些等价的东西。我{Big}或者MemCache会话read Django会话can be backed但是我从来没有让它们工作过。我想我要问的是“我应该......”

  1. 坚持让Django会话工作吗?
  2. 特别是查看会话的其他一些webapp框架,或者一般的网站?
  3. 自己动手?
  4. 在我看来,会议不是开箱即用的支持,并且不是一流的公民。你做什么的?!

    感谢。

4 个答案:

答案 0 :(得分:3)

开箱即用的App引擎不支持django会话的原因是因为django使用基于数据库表(模型)的会话,而appengine不支持django ORM。

解决这个问题的方法是让django模型在appengine上开箱即用。它是通过在App Engine Patch项目中修补django代码完成的。

使用这个补丁,当django模型工作时,你可以访问django admin,django auth以及最新的django版本。

您也可以在App引擎上找到关于部署django应用程序的博文,非常有用:http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/

答案 1 :(得分:1)

gaeutilities库附带了一个运行良好的会话管理类:

答案 2 :(得分:1)

我现在正在使用gaeutilities会话。但是,问题是这些创建的会话只能在服务器端代码中访问。当我尝试在django模板标签中访问它们时,我可以检索它们。我错过了什么吗?

示例:客户端(Django模板标签)

         {% if request.session["email"]%}
            <p><a href="/logout/"id="menu">Logout</a></p>
            <p class="subtext">GoodBye!</p>
        {% else %}
            <p><a href="/login/"id="menu">Login</a></p>
            <p class="subtext">Welcome!</p>
        {% endif %}

服务器端只是一个简单的self.session ['email'],可以被所有服务器端文件访问。

除了将会话值呈现给页面之外,有关如何在客户端访问它们的任何想法?我需要所有客户端页面来访问会话值。

答案 3 :(得分:0)

gaeuitlities包含一个django中间件,但是我有一段时间没有完成django开发,并且不能100%保证它与django保持同步。如果有问题我肯定不会花很长时间来解决。

https://github.com/joerussbowman/gaeutilities/blob/master/appengine_utilities/django-middleware/middleware.py

如果您为会话使用该中间件,它应该按预期工作,包括在模板中。如果遇到问题,请在github上提出任何问题。

https://github.com/joerussbowman/gaeutilities