ウェブサイトのコードをより洗練されたものにリファクタリングしようとしています。
私の現在のコードは次のように設定されています:
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 ツールは役に立ちますか?