我对python还是个新手,不到一年的经验,我一直在通过在googleappengine上构建一个相当大的项目来学习它。它已经成长为一个由10k多行代码和html模板组成的庞然大物,因此我正在重构相当大一部分代码,以遵循更严格的MVC架构。在
我的问题是一个与python直接相关的问题。我不知道用什么词来确切地表达我想要构建什么,所以我只想举个例子。在
这是我当前用于显示视图的“基本”代码:
class MainHandler(webapp.RequestHandler):
def get(self):
tUser = users.get_current_user()
tContext = {
'user': tUser,
'login': users.create_login_url(self.request.uri),
'logout': users.create_logout_url(self.request.uri),
}
#User is logged in
if (tUser):
#code for loading view information and adding to the context dict
#CUSTOMIZATION GOES HERE
else:
self.redirect("/")
tmpl = os.path.join(os.path.dirname(__file__), 'logged-in.html')
self.response.out.write(render(tmpl, tContext))
我想采用这个样板代码并以某种方式抽象它,也许可以为每个类方法添加一个“可定制”的代码?在
我想我也许可以用一个decorator来做这件事,但是除了stackoverflow之外,我没有python导师来指引我正确的方向。我更喜欢最有可能的Python方法,或者至少在这种情况下通常被认为是“最佳实践”。在
python版本是2.7.2。在
编辑
注意,如果我可以用decorator来实现这一点,那么我需要什么才能从完全不同的类和python文件调用decorator呢?我希望能够将我的修饰符放在一个文件中,并从其他地方引用它,这样我的代码就尽可能地规范化了。=)
编辑2
这是我在控制台中编写的测试代码,我必须晚上离开,否则我会改进它。然而,它似乎成功地访问和修改了类的属性,这正是我认为在GAE中实现这一点所需要的。在
^{2}$印刷品
10
5
this is test 2
this is test 3
您可以为请求处理程序使用基类,而不是使用decorator,如下所示
相关问题 更多 >
编程相关推荐