如何在Google App Engine/Django中使用会话?
我刚接触Python、GAE和Django。虽然我知道GAE没有真正的内存会话,但我觉得我想要类似的东西。我看过Django的会话可以使用BigTable或MemCache来支持,但是我一直没能让它们正常工作。我想问的是:“我应该……”
- 继续努力让Django的会话正常工作吗?
- 看看其他的网络应用框架,特别是关于会话的部分,或者整体上看看其他框架?
- 自己动手做一个?
我觉得会话似乎不是开箱即用的,感觉也不是特别重要。你们都是怎么处理的呢?
谢谢。
4 个回答
我现在在使用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'],所有服务器端的文件都能访问这个值。
有没有什么办法可以在客户端访问这些会话值,而不是把会话值渲染到页面上?我需要所有客户端页面都能访问这些会话值。
gaeutilities库里有一个会话管理类,使用起来很不错:
django的会话功能在App Engine上不能直接使用,主要是因为django使用的是基于数据库表的会话,而App Engine不支持django的数据库操作。
解决这个问题的方法是让django的模型在App Engine上可以直接使用。这个已经通过修改django的代码实现了,具体可以查看App Engine Patch项目。
使用这个补丁后,django的模型就能正常工作,你可以使用django的管理后台和认证功能,同时还能享受到最新版本的django。
你可能还会觉得这篇关于在App Engine上部署django应用的博客文章很有用:http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/