2009-08-13 63 views
5

我是Python/GAE/Django的新手。我用GAE得到的結果是,本身沒有內存中的會話......但我想我想要一些相當的東西。我read Django會話can be backed BigTable或MemCache,但我從來沒有得到他們的工作。我想我問的是「我應該...」如何開始使用Google App Engine/Django中的會話?

  1. 堅持讓Django會話正常工作?
  2. 看看其他的webapp框架,特別是會話,還是一般的網站?
  3. Roll my own?

在我看來,會議不支持開箱即用,並且不知道是不是頭等公民。你是做什麼?!

謝謝。

回答

3

Django的會話不被App Engine的支持開箱即用的原因是因爲Django使用數據庫表(模型)會話,並且django ORM在appengine上不受支持。

解決方案是讓django模型在appengine上運行。它已通過修補django代碼在App Engine Patch項目中完成。

使用這個補丁,隨着django模型的工作,您可以訪問django admin,django auth以及最新的django版本。

您也可能會發現這個博客帖子上部署在App Engine Django應用程序,非常有用:http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/

+0

App Engine補丁似乎是一個比SDK更好的啓動項目的方式,謝謝! – Josh 2009-08-14 14:55:03

+0

由於修補程序項目已停止,因此此答案已過時。可以請更新答案。使用Appengine上的Django會話時,我遇到了同樣的問題。 – 2014-02-17 12:54:40

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 [「電子郵件」],並且可以通過所有的服務器端文件的訪問。

除了將會話值呈現給頁面之外,關於如何在客戶端訪問它們的任何想法?我需要所有客戶端頁面來訪問會話值。

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