ルーティング方式の2つの設定
1、デコレータ
@ app.route(' /インデックス/ ' ) DEF :インデックス() の戻り " のHello World!"
図2に示すように、ソース
route-> decorator-> add_url_rule(ルール、エンドポイント、F、**オプション)
デフインデックス(): リターン " のHello World!' app.add_url_rule(' /インデックス/ "、なし、インデックス)
注:エンドポイントの値が同じにすることはできません
第二に、パラメータ
ルールURLルール ビュー関数名view_func エンドポイント =なし名、即ち、逆を生成するためのURL:なurl_for(「名前」) 方法は [=なしモードのような、要求を可能にする「GET 」、「POST 」] strict_slashesの=なし最終的なURL / シンボル厳しい要件、か redirect_to = 指定されたアドレスにリダイレクトなし デフォルト =なしデフォルト値なしURLパラメータ、関数のパラメータを必要とし、= {デフォルト「K 」:「V 」}提供されたパラメータの関数として サブドメイン =なし、サブドメインのアクセス
エンドポイント、導入の前にmetods、
1、redirect_toのリダイレクト
アクセスルールは、先URLにリダイレクトする場合
役割:Webサイトのアップグレードやメンテナンス、ユーザーが新しいサイトのアドレスを知っている必要はありませんこの方法では、あなたが古いのURLから指定されたURLにジャンプすることができます
フラスコ輸入フラスコ アプリ =フラスコ(__name__ ) @ app.route(' /インデックス/ '、redirect_to = ' https://www.bootcss.com/ ' ) DEF インデックス(): リターン " のHello World!' #のapp.add_url_rule(' /インデックス/」、なし、インデックス) の場合 __name__ == ' __main__ ' : app.run()
2、strict_slashes
=フラスコstrict_slashes #ずさんURLの最後のスラッシュの要件
3、サブドメイン(理解)
フラスコインポートフラスコ アプリ =フラスコ(IMPORT_NAME = __name__ ) App.configファイル[ ' SERVER_NAME ' ] = ' api.com:5000 ' ""」 127.0.0.1 api.com 127.0.0.1 web.api.com 127.0.0.1管理。 api.com "" " #http://admin.api.com:5000/admin @ app.route(" /管理者"、サブドメイン= " 管理者" ) デフadmin_index(): リターン " admin.your-domain.tldに「 #1 のhttp://ウェブ。api.com:5000/ @ app.route(" / "、サブドメイン= " ウェブ" ) デフweb_index(): リターン " web.your-domain.tldに" #http://sdsdf.api.com:5000/ #のhttp:// sdfsdf。 api.com:5000/ #http://asdf.api.com:5000/ @ app.route(" /ダイナミック"、サブドメイン= " <ユーザー名> " ) DEF username_index(ユーザー名 ):""」動的なサブドメインでもありますサポート ダイナミック/-domain.tldにuser1.yourしようとしてみてください「」」 戻りユーザ名+" .your-domain.tldは" もし __name__ == ' __main__ ' : app.run()
三、CBV(ほとんどありません)
functools インポートラップ からフラスコインポートフラスコ、ビュー アプリ =フラスコ(__name__ ) #4 デフ:ラッパー(FUNC) @wraps(FUNC) DEF内(*引数、** kwargsから): 戻り FUNC(*引数、** kwargsから)を 返すインナー #1 クラス:UserView(views.MethodView) #3 [=メソッドを' GET ' ] デコレータは = [ラッパ] デフ **、(自己、*引数を取得しますkwargsから): リターン ' GET ' DEFポスト(自己、* argsを、** kwargsから): リターン ' POST ' #2 app.add_url_rule(' /ユーザ/ '、なし、UserView.as_view(' エンドポイント' )) の場合 __name__ = = ' __main__ ' : app.run()
第四に、カスタム定期
フラスコインポートフラスコ、なurl_for から werkzeug.routing インポートBaseConverter アプリケーションはフラスコ(= __name__ ) #のカスタムクラス:ステップ1 クラス:RegexConverter(BaseConverter) 「」「 カスタムURLが正規表現と一致 「」」 DEF __init__ 、(自己、地図をREGEX): スーパー(RegexConverter、自己)。__init__ (MAP) self.regex = REGEX DEFのto_python(自己、値): "" " ルーティング一致は、一致が機能の観点からパラメータ値に渡され :PARAM値: :戻ります: 「」 " 戻りINT(値) DEFのto_url(自己、値): 「」「 逆URLがなurl_forを使用して生成される、プロセス処理によって渡されたパラメータとを生成するために使用されるパラメータのURL値を返す :PARAM値: :リターン: 」 「」 ヴァル = スーパー(RegexConverter、自己).to_url(値) を返すヴァル #第二工程:コンバータに app.url_map.converters [ 「REG 」 ] = RegexConverter 「」 " 1.ユーザーが要求を送信 するための内部2.フラスコを試合定期 3.コールto_python(通常の試合結果)メソッド のビュー関数の4 to_pythonメソッドの戻り値 「」 " #のカスタム定期的に使用します。ステップ3 (app.route @ "/インデックス/ <REG( "\ dの+"):NID> /' ) DEF 指数(NID): プリント(NID、タイプ(NID)) #4 <クラスの整数'> 印刷(なurl_for(' インデックス'、NID = 110)) #/インデックス/ 110 / 復帰 " インデックス" なら __name__ == ' __main__ ' : app.run()