2017-08-04 5 views
2

私は次のwebapp2のルートを持っていると仮定しましょう。私は最初の部分は、URLを知っているwebapp2のルートを理解する

webapp2.Route('/api/users/register/verify/<user_id:\d+>/<signup_token:.+>', users.VerificationHandler, name='verification') 

は、その後、要求ハンドラの名前ですが、私は名前=「検証」の目的を理解していません。誰かがなぜwebapp2ルートで名前が使用されるのか説明してください。

また、uri_for()関数の目的は何ですか?なぜそれを使うのですか?

答えて

2

programatically webapp2はクラスであり、Routeはクラス内で定義された関数でした。

webapp2をは、追加の機能を提供するために、Webアプリケーションモデルを拡張ルーティングメカニズムが、何もありません:

  • URIビル:アプリでハードコードされたURIを回避必要なときに登録されたルートを構築することができ、コードとテンプレート。

  • キーワード引数:ハンドラは、一致するURIからキーワード引数を受け取ることができます。

  • ネストされたルート:ルートは要求パス以上に一致するように拡張できます。下記の経路クラスは、 のドメインとサブドメインと一致することがあります。

例:webapp2.Route('/api/users/register/verify/<user_id:\d+>/<signup_token:.+>', handler=HomeHandler, name='verification')

あなたの例から、name='verification'

それはあなたのURLの別名です...

あなたの例では、

あなたのURLは次のとおりです。 '/api/users/register/verify/<user_id:\d+>/<signup_token:.+>' あなたはそれを覚えていることができないので、覚えやすいものでエイリアスを助けてください。verification

ので、あなたのURL、= verification/api/users/register/verify/<user_id:\d+>/<signup_token:.+>

エイリアスは、次の実行時に、元のURLに

を翻訳し、uri_for()

私はあなたがあなたの大きなのエイリアスを割り当て、言ったようにURL ..あなたはそれの最短のエイリアスを知っていました。あなたはこの機能を使用することができますエイリアスからURLを取得したい場合は、

print uri_for('verification') 

は、/api/users/register/verify/<user_id:\d+>/<signup_token:.+>

+0

をお渡ししますので、「名前」を言うことができ、長いURLを短くするために使用されていますか?それは開発者だけのためのものですか? – HamidArrivy

+0

はい..それはURLを作っていません。そのようなエイリアス...アドレスバーに表示されません..実行時に翻訳されます..短いURLはバックエンドで長く割り当てられます.. pythonはそれを知っていました..一度実行すると翻訳されます –

+0

このよく説明された答えのおかげで! – HamidArrivy

関連する問題