2009-08-13 14 views
5

Jestem nowy w Python/GAE/Django. Rozumiem, że z GAE nie ma sesji w pamięci per se ... ale myślę, że chcę czegoś podobnego. I read że Django sesje can be backed przez BigTable lub MemCache, ale nigdy nie dostałem ich pracy. Domyślam się, że pytam: "Powinienem ..."Jak zacząć Sesje w Google App Engine/Django?

  1. Utrzymać działanie sesji Django?
  2. Spójrz na inne ramy aplikacji do sesji internetowych w szczególności lub na temat strony w ogóle?
  3. Rzuć własną?

Wydaje mi się, że sesje nie są obsługiwane od razu po wyjęciu z pudełka i nie są w jakiś sposób obywatelami pierwszej klasy. Co robisz?!

Dzięki.

Odpowiedz

3

Powodem sesje Django nie są obsługiwane przez App Engine wyjęciu z pudełka jest dlatego Django używa tabeli bazy danych (oparte na modelu), a ORM django nie jest obsługiwane w appengine.

Rozwiązaniem tego problemu jest, aby modele django pracy po wyjęciu z pudełka na AppEngine. Dokonano tego poprzez łatanie kodu django w projekcie App Engine Patch.

Stosując tę ​​poprawkę, jak modele django działa, można uzyskać dostęp do Panel administracyjny Django Django auth wraz z najnowszej wersji Django.

Można również znaleźć tego blogu na rozmieszczanie aplikacji Django na App Engine, przydatne: http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/

+0

App Engine patch wydaje się to dużo lepszy sposób na rozpoczęcie projektu niż sam SDK, dzięki! – Josh

+0

Ta odpowiedź jest już nieaktualna na dzień dzisiejszy, ponieważ projekt poprawki jest przerywany. Mógłbym zaktualizować odpowiedź. Utknąłem na tym samym problemie, używając sesji z Django na Appengine. –

1

używam sesji gaeutilities teraz. Problem polega jednak na tym, że te utworzone sesje są dostępne tylko w kodach po stronie serwera. Kiedy próbuję uzyskać do nich dostęp w tagu szablonu django, mógłbym je odzyskać. Czy czegoś brakuje?

Przykład: po stronie klienta (Django znaczniki szablonu)

  {% 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 %} 

stronie serwera jest tylko prosty self.session [ „email”] i może być dostęp do wszystkich plików po stronie serwera.

Wszelkie pomysły, w jaki sposób uzyskać do nich dostęp po stronie klienta oprócz renderowania wartości sesji na stronie? Potrzebuję wszystkich stron po stronie klienta, aby uzyskać dostęp do wartości sesji.

0

gaeuitlities zawiera oprogramowanie pośredniczące django, jednak od jakiegoś czasu nie pracowałem nad rozwojem django i nie mogę zagwarantować 100%, że jest ono aktualizowane na bieżąco z django. Jestem pewien, że nie zajmie mi to dużo czasu, jeśli problem się pojawi.

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

Jeśli używasz tego middleware dla ciebie sesji, to powinno działać jak można się spodziewać w tym szablonów. Proszę zgłaszać wszelkie problemy dotyczące github, jeśli napotkasz problemy.

https://github.com/joerussbowman/gaeutilities