class MainPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'index.html')
self.response.out.write(template.render(path, template_values))
class Gadget(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), 'gadget.xml')
self.response.out.write(template.render(path, template_values))
答案 0 :(得分:6)
实际上,这取决于您希望将来两个类之间的共同点。重构的目的是识别常见的抽象,而不是最小化代码行数。
也就是说,假设两个请求预计仅在模板中有所不同:
class TaskListPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
tasks_query = Task.all()
tasks = tasks_query.fetch(1000)
if user:
url = users.create_logout_url(self.request.uri)
else:
url = users.create_login_url(self.request.uri)
template_values = {
'tasks': tasks,
'url': url
}
path = os.path.join(os.path.dirname(__file__), self.template_name())
self.response.out.write(template.render(path, template_values))
class MainPage(TaskListPage):
def template_name(self):
return 'index.html'
class Gadget(TaskListPage):
def template_name(self):
return 'gadget.xml'
答案 1 :(得分:1)
为什么目的重构?您是否收到错误,想要做其他事情,或者......?假设有适当的导入和url调度,我在这里看不到任何必须为app引擎重构的东西 - 所以,不要让我们猜测! - )
答案 2 :(得分:1)
由于除了一个字符串('index.html'vs'adjget.xml')之外,两个类都是相同的,是否可以将一个字符串作为另一个字符串的子类,并将两个字符串作为类常量?< / p>
答案 3 :(得分:1)
使它成为同一个类,并使用GET或POST参数来决定要呈现的模板。