在App Engine上使用Python2.7时,可以引用每个请求的全局变量吗? [英] When using Python2.7 on App Engine, is it ok to reference per-request globals?

查看:77
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆