1. URLは何ですか?
Djangoのディレクトリサイトのサポートなど。その本質は、URLとあなたがそのビュー機能を呼び出したいURLとの間のマッピングテーブルであり、あなたはDjangoの、ロジック・コード実行の該当期間を呼び出すURLに送信されたクライアントに伝えるようにしています。
図2に示すように、単純なルーティング構成
django.conf.urlsがインポートURLを含む から app01 インポートビュー urlpatterns = [ URL(R ' datatimes /(\ dの{4})/(\ dの{2})$ ' 、views.year_pipei) ]
- URLから値をキャプチャするには、あなたはそれを囲む括弧のペアを配置する必要があります。
- 各URLを持っているので、リードバックスラッシュを追加する必要はありません。例えば、それはする必要があります
^articles
代わりに^/articles
。 - 「R」の前に、各正規表現は任意ですが、追加提案しました。これは、文字列が「原始的」であることはPythonを伝えます - 文字の文字列をエスケープすべきではありません
図3に示すように、よく知られている基
上記の例では、URLの値とビューに渡された位置パラメータを捕捉するために(括弧で)単純な正規表現名前グループを使用します。より高度な使い方では、ビューに渡されるURLとキーワードパラメータの値をキャプチャするために名前の正規表現のグループを使用することができます。
Pythonの正規表現では、正規表現の構文グループ名は(?P<name>pattern)
、どこname
のグループの名前で、pattern
マッチするパターンです。
ここでは上記の名前のグループのURLconf書き換えを使用しています。
django.conf.urls インポート、URLが含まれる から app01 インポートビュー urlpatterns = [ URL(R ' datatimes /を(?P <年> \ D {4})/(?P <月> \ D {2})$ ' 、views.year_pipei) ]
キャプチャされた値の代わりに関数のパラメータを表示するための位置パラメータ転送のキーとして:この実装では、唯一の微妙な違い前の例と同じです。例えば:
/記事/ 2005/03 /要求の呼び出しは(要求、年= '2005'、月= '03 ')機能の代わりにviews.month_archive(リクエスト、' 2005 '' 03「)をviews.month_archive。
4、流通
プロジェクトは、複数のアプリを持っている場合、どのように我々は、実行するアプリケーションのルートを決定するのですか?だから我々は、分布のルートを使用し、我々はurls.py各アプリでファイルを作成し、グローバルurls.py内に記述する必要があります。
django.conf.urls インポートURLが含ま から django.contribのインポートADMIN から app02 インポートビュー #以下の二つのビューをアプリケーションに導入される場合には、上記カバーする urlpatternsの = [ URL(R&LT 「^ ADMIN / 」、 admin.site.urls)、 URL(R&LT ' ^ app01 / '、(含める' app01.urlsを'))、 #はapp01を開始経路を指す、views.py app01の中に分布される R&LT(URL ' / ^ app02 'ザは、(含ま' app02.urls ' ))、 ]
我々はurls.pyで行わapp01のapp01の先頭をルーティングすることによって対処することができるように、urls.py.実行中app02はapp02を開始するアドレスをルーティング
5、逆解析
テンプレートに次のコードをlogin.htmlと:
<フォームアクション= " /インデックス/ "メソッド= " ポスト" > 用户名の<input type = " テキスト"名前= " ユーザー" > 密码の<input type = " パスワード"名前= " PWD " > の<input type = " 提出" >
これは、トリガー・イベントの後、インデックスページのルートにジャンプしますが、ルートのインデックスが変更された場合、ここで使用することはできませんし、ここで、通常のルートを実行するために変更する必要があり、その後、非常に面倒であることは明らかである我々解析を逆にする必要性、
urls.pyではname属性内のルーティングに追加します。
URL(R 'インデックス'、views.login、名前= ' XXX ')
次のように読むためのテンプレートを与えます。
<フォームアクション= " {%URLは% 'XXX'} "メソッド= " ポスト" > 用户名の<input type = " テキスト"名前= " ユーザ" > 密码の<input type = " パスワード" NAME = " PWD " > <入力タイプ= 「提出」 >
だからかかわらず、将来の変更ルーティングインデックス形式の、そしてより多くのテンプレート名に渡されます、これが逆引きです。