python - 你如何从 python appengine 中的 basehandler 调用处理程序?

标签 python google-app-engine web-applications

我想做这样的事情:

class Basehandler(webapp.RequestHandler):

  def __init__(self):
    if checkforspecialcase: #check something that always needs to be handled
      return SpecialCaseHandler.get()

class NormalHandler(Basehandler):

  def get(self):
    print 'hello world'
    return

class SpecialCaseHandler(Basehandler):

  def get(self):
    print 'hello special world'
    return

想法是,无论最初调用什么处理程序,如果满足某种情况,我们基本上都会切换到另一个处理程序。

我是 python 的新手,所以我不确定我尝试做的事情是否可行。或者这是否是最好的方法。我真正想做的是确保向某人展示完整的个人资料页面,如果他们已经开始注册过程但还没有完成……无论他们提出什么要求。因此,“checkforspecialcase”查看他们的 session 并检查不完整的信息。

最佳答案

要保持干燥,请使用 Template Method pattern

class BaseHandler(webapp.RequestHandler):
    def DoGet(self, *args):
        ''' defined in derived classes, actual per-handler get() logic'''
        pass

    def get(self, *args):
        # don't get caught in endless redirects!
        if specialCase and not self.request.path.startswith('/special'):
            self.redirect('/special')
        else:
            self.DoGet(*args)

class NormalHandler(BaseHandler):
    def DoGet(self, *args):
        # normal stuff

class SpecialHandler(BaseHandler):
    def DoGet(self, *args):
        # SPECIAL stuff

关于python - 你如何从 python appengine 中的 basehandler 调用处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4901108/

相关文章:

google-app-engine - 如何使用 Java 指定遗留增量 ID

java - 与锡耶纳玩耍的多重关系

java - Websphere 6.1集群环境下如何运行定时任务

localization - 浏览器语言: autodetect vs user select?

python - 如何在自定义 Gtk 小部件中设置最小/首选大小

python - 为什么文件可写但 os.access( file, os.W_OK ) 返回 false?

python - Pandas 散点图 : how to plot data on a secondary y axis?

google-app-engine - 限制对 SyncGateway 的 Admin REST API 的访问

Java Web 应用程序模型 - 它是否应该包含一个保存外键选择的属性?

python - Odoo - 注册后立即更改用户组 ID(电子商务)