まず第一に、私はGAEを初めて使用するため、これを間違った方法で行っている可能性があります。ただし、以前はPHPを使用しており、セッションは永続データを保持する方法でした。私はPython2.7を使用しています。これは、他のすべてのPython開発に使用しているためです。ただし、理想的なソリューションではないにしても、2.5へのダウングレードが有効なソリューションであるかどうか疑問に思い始めています。
シナリオは、概念実証サイトを構築している場合で、 「user」というセッション変数に「admin」の値を設定するだけの「dummy」ログインボタンが必要です。次に、ナビゲーションテンプレートをチェックインして、変数が設定されているかどうかを確認します。設定されている場合は、メニューコマンドをいくつか追加します。とてもシンプルです。 (注:これは安全ではなく、賢明ではないこと、または実行する必要があることは何もわかっていません-問題は、セッションが機能していないことであり、私が実行していることではありません-コードで他のいくつかのことを使用していますセッション-デプロイ時に機能していません)
Pythonを使用したGAEにはいくつかの異なるセッションライブラリがあるようで、Google検索で最も広く推奨されているもの(gaeutilities )を試しましたが、これによりエラーが発生し、機能しませんでした(最終的にこの投稿に出くわして、 Python 2.7とは互換性がありません)。もう少し検索すると、appenginelearn.comからこのライブラリにアクセスしました。このライブラリは、完全に機能しました...デプロイするまでは、何も実行されません。なぜこれが失敗するのかについて、いくつかの指針やアドバイスが欲しいです。これが私が使用している関連コードです:
appenginelearn.comのutilライブラリディレクトリをアプリケーションディレクトリのルートに配置し、セッションをインポートしました。
from util.sessions import Session
次に、LoginクラスとLogoutクラスを追加しました。
class LogIn(webapp2.RequestHandler):
def get(self):
self.session = Session()
self.session['user'] = 'admin'
# Return the user to the page they logged in from
referer = self.request.environ['HTTP_REFERER'] \
if 'HTTP_REFERER' in self.request.environ \
else '/'
self.redirect(referer)
class LogOut(webapp2.RequestHandler):
def get(self):
self.session = Session()
self.session.delete_item('user')
self.redirect('/')
そして、メインクラスの次の(ひどい)コード(これはデモのすべてのページに対して行われます)
class MainPage(webapp2.RequestHandler):
def get(self):
self.session = Session()
logging.info('Main page fired up')
if 'user' in self.session:
user = self.session['user']
else:
user = None
template_values = {
'user': user
}
template = jinja_environment.get_template('main.html')
self.response.out.write(template.render(template_values))
そして、これはHTMLテンプレートファイルにあります
{% if user %}
<p>Welcome, {{user}}</p>
{% endif %}
そして、ログのエラー:
2012-10-04 02:51:28.084 /login 302 143ms 0kb Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
*ip address removed* - - [04/Oct/2012:02:51:28 -0700] "GET /login HTTP/1.1" 302 136 "*site-removed*" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4" "*site-removed*" ms=144 cpu_ms=0 cpm_usd=0.000015 instance=*instance removed*
**I** 2012-10-04 02:51:28.080
Creating session session-*session number removed*
**E** 2012-10-04 02:51:28.084
Set-Cookie: appengine-simple-session-sid=*session number removed*; Path=/