在App Engine上使用Python2.7时,可以引用每个请求的全局变量吗? [英] When using Python2.7 on App Engine, is it ok to reference per-request globals?
本文介绍了在App Engine上使用Python2.7时,可以引用每个请求的全局变量吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我可以安全地做到吗?
user = users.get_current_user()
曾经在脚本的顶部,在全局空间中,并从各种处理程序中引用它,而没有任何命名空间问题?
解决方案
最好创建一个基类,在那里添加一些函数,然后从基类扩展你的所有处理程序,因为 get_current_user()
与请求处理程序有关,并使只有感觉。
以下是一个例子:
import webapp2
from google.appengine.api导入用户
$ b $ class BaseHandler(webapp2.RequestHandler):
def get_user(self):
#也许还会在这里添加一些逻辑或返回自己的用户模型
返回users.get_current_user()
class MainPage(BaseHandler):
def get(self):
if self.get_user():
self.response.headers ['Content-Type'] ='text / plain'
self.response.out.write('Hello,'+ self。 get_user()。nickname())
else:
self.redirect(users.create_login_url(self.request.uri))
I'm using the Python2.7 runtime with threadsafe set to false in the manifest.
Am I safe to do
user = users.get_current_user()
once at the top of the script, in the global space, and reference it from within various handlers without any namespace problems?
解决方案
It is better to create a base class, add some functions there and then extend from base class all your handlers, because get_current_user()
has to do with the request handler and make sense only there.
Here is an example:
import webapp2
from google.appengine.api import users
class BaseHandler(webapp2.RequestHandler):
def get_user(self):
#Maybe also adding some logic here or returning your own User model
return users.get_current_user()
class MainPage(BaseHandler):
def get(self):
if self.get_user():
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + self.get_user().nickname())
else:
self.redirect(users.create_login_url(self.request.uri))
这篇关于在App Engine上使用Python2.7时,可以引用每个请求的全局变量吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文