3
我正在開發一個應用程序來學習python和Google App Engine。我想從cookie中獲取值並在模板上打印以隱藏或顯示某些內容。如何獲取谷歌應用程序引擎模板上的cookie值
可能嗎?
什麼樣的會話系統最適合與谷歌應用程序引擎一起使用?
在gae和模板上使用會話的最佳方式是什麼?
如何驗證使用模板的cookie值?
我正在開發一個應用程序來學習python和Google App Engine。我想從cookie中獲取值並在模板上打印以隱藏或顯示某些內容。如何獲取谷歌應用程序引擎模板上的cookie值
可能嗎?
什麼樣的會話系統最適合與谷歌應用程序引擎一起使用?
在gae和模板上使用會話的最佳方式是什麼?
如何驗證使用模板的cookie值?
記住,谷歌App Engine是一個平臺,而不是一個框架, 所以你的問題是,如果webapp2的(GAE中使用的默認框架) 有一個很好的接口來處理餅乾。即使框架沒有這個接口 ,只要你有權訪問Cookie頭部 這個請求,你就可以訪問cookie。
以下是兩個示例,一個使用webapp2 cookie界面,另一個使用Cookie標頭。
webapp2的:
class MyHandler(webapp2.RequestHandler):
def get(self):
show_alert = self.request.cookies.get("show_alert")
...
Cookie頭(使用webapp2的):
# cookies version 1 is not covered
def get_cookies(request):
cookies = {}
raw_cookies = request.headers.get("Cookie")
if raw_cookies:
for cookie in raw_cookies.split(";"):
name, value = cookie.split("=")
for name, value in cookie.split("="):
cookies[name] = value
return cookies
class MyHandler(webapp2.RequestHandler):
def get(self):
cookies = get_cookies(self.request)
show_alert = cookies.get("show_alert")
...
這同樣適用於會議,雖然使自己的會話庫 是比較困難的,反正你覆蓋webapp2的:
from webapp2_extras import sessions
class MyBaseHandler(webapp2.RequestHandler):
def dispatch(self):
# get a session store for this request
self.session_store = sessions.get_store(request=self.request)
try:
# dispatch the request
webapp2.RequestHandler.dispatch(self)
finally:
# save all sessions
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
# returns a session using the backend more suitable for your app
backend = "securecookie" # default
backend = "datastore" # use app engine's datastore
backend = "memcache" # use app engine's memcache
return self.session_store.get_session(backend=backend)
class MyHandler(MyBaseHandler):
def get(self):
self.session["foo"] = "bar"
foo = self.session.get("foo")
...
請參閱webapp documentation瞭解更多有關會議和餅乾的形成。
關於您關於模板的問題,您應該再次查看您使用的模板引擎的文檔,並查找您需要知道的內容。