0

ウェブサイトのコードをより洗練されたものにリファクタリングしようとしています。

私の現在のコードは次のように設定されています:

class Root(object):
    def __init__(self):
        ...

    def require_token(token, redir):
        if token != cherrypy.session["token"]:
            self.redirect(redir, "Bad token")

    def require_logged_in(redir):
        if not self.logged_in():
            self.redirect(redir, "Must be logged in")

    @cherrypy.expose
    def index(self):
        ...

    @cherrypy.expose
    def login(self, username, password, return_to):
        self.login_user(username, password)
        self.redirect(fix_url(return_to))

    @cherrypy.expose
    def logout(self, token, return_to):
        self.require_token(token, fix_url(return_to))
        self.logout_user()
        self.redirect(fix_url(return_to))

    @cherrypy.expose
    def member_area_query(self, query):
        self.require_logged_in("/")
        if not self.test_query(query):
            self.redirect(current_page, "Query failed.")
        ...

    ...

1 つの大きな煩わしさは、リダイレクト先のページを手動で渡さなければならないことです。

  • 会員エリアページで、ユーザーがログインしていない場合、「/」にリダイレクトしたい
  • ログインとログアウトのために return_to パラメータにリダイレクトしたい
  • それ以外の場合、リダイレクトは要求された同じページに移動する必要があります(エラーメッセージが表示されます)

だから私の質問は:

  • リダイレクト先のページをより適切に定義するにはどうすればよいですか?
  • CherryPy には、私を助ける何かが組み込まれていますか?
  • デコレータを使用して、リダイレクト先のデフォルト ページを保存できますか? または、require_* 関数を呼び出すには?
  • CherryPy ツールは役に立ちますか?
4

1 に答える 1