Python Can’;无法在方法内部呈现网页
我正在编写一个GAE应用程序(并使用webapp2框架和jinja2作为模板渲染器),我希望用一个装饰器包装我的所有GET和POST方法。装饰程序检查用户是否有权访问此页面,如果没有,则应显示一条错误消息 问题是,在decorator内部,我无法使用self.response.write显示错误消息,因为decorator是一个方法,它不会“扩展”webapp2.RequestHandler 以下是装饰器代码:Python Can’;无法在方法内部呈现网页,python,jinja2,webapp2,Python,Jinja2,Webapp2,我正在编写一个GAE应用程序(并使用webapp2框架和jinja2作为模板渲染器),我希望用一个装饰器包装我的所有GET和POST方法。装饰程序检查用户是否有权访问此页面,如果没有,则应显示一条错误消息 问题是,在decorator内部,我无法使用self.response.write显示错误消息,因为decorator是一个方法,它不会“扩展”webapp2.RequestHandler 以下是装饰器代码: def checkpriv(classNo, errorMsg): def
def checkpriv(classNo, errorMsg):
def wrapFunction(method):
if checkprivileges(classNo):
return method
else:
logging.info(users.get_current_user().nickname() + errorMsg)
# NEED TO DISPLAY ERROR MESSAGE HERE
return wrapFunction
我试图创建一个扩展webapp2.RequestHandler的类,并在decorator内初始化该类的一个对象,但我发现这个错误404 get方法是不允许的。为什么不创建一个覆盖webapp2 init或dispatch的BaseHandler呢。这样你就不需要(或忘记)装饰师了 文档和 我使用dispatch override创建基于角色的访问控制
class BaseHandler(webapp2.RequestHandler):
""" webapp2 base handler """
def dispatch:
# abort or dispatch and pass an argument to the handler
self.request.route_kwargs['user_access'] = UserAccess(self.request)
super(BaseHandler, self).dispatch()
class YourHandler(BaseHandler):
def get(self, user_access, ..):
....