Djangoの学習:URLルーティングシステム

 

、MTVモデル

MTVの1.Djangoを表します。

  モデル(モデル):データベースと関連するビジネスオブジェクトとオブジェクトがデータベースに責任がある(ORM)

  テンプレート(テンプレート):すべてのHTMLファイルを置きます

           テンプレートの構文:目的は独立変数(データベースの内容)であるHTMLページに埋め込まれてどのように巧みに

  ビュー(Viewは):ビジネスロジックを担当し、かつ適切な時期にモデルとテンプレートを呼び出します

  また、DjangoのURLディスパッチャがあります。これは、ページ要求のURLの役割は、ビュー、ビューの異なる治療に送信し、適切なモデルとテンプレートを呼び出しているです。

2、関連するコマンド

  ジャンゴ-adminのstartprojectのプロジェクト名:Djangoプロジェクトを作成します。

  プロジェクト内のアプリケーションを作成しますのpython3 manage.py startappのAPPNAME

  ファイル名を指定して実行:のpython3 manage.pyのrunserver IP PORT

3、URLの設定(のURLconf)urls.py

  機能:ビュー機能を確立し、URLマッピング関係

  URL(正規表現(ルール)、ビュー機能、[オプション])

   URLます:http://127.0.0.1:8080 /ブログ/記事/ 2003/05、A = 1&B = 2?

     マッチ文字列:URLのユーザ入力に対応するパス/ブログ/記事/ 2003/05

 注意:

  (1)ある現象の出現の場合、一致するルールの競合、最初の一致URLをカバー

  (2)未知のパケット:URL(R '^記事/(\ dの{4})/(\ dは{2})$'、views.year_month)、#年(requset、1990,12)位置パラメータに従って

  (3)知られているパケット:URL(R '?? ^記事/(P <年> \ D {4})/(P <月> \ D {2})$'、views.year_month)、#年(requset位置パラメータによって、年= 1990、月= 12)

  (4)URL分发:URL(R '^ブログ/'、)( 'blog.urls' を含めます)

補足ビュー機能

1、ビュー機能:これは、2つのオブジェクト(描画HttpResponseオブジェクト内のソース)を含むようでなければなりません

       リクエストオブジェクト:-----「すべての情報を要求

       HttpResponse:-----「応答の内容(文字列)

ます。http://127.0.0.1:8000 / login.htmlとユーザー= ASD&PWD = ASD 2、データを送信するための要求を取得しますか?

  キー:データ要求を含む
    。1、`` request.GET``  データは{}空の辞書ではない場合、データは、GET要求
    、2 request.POSTの:データが空の辞書は、{}でない場合、データのPOST要求
    。3、要求.method GETまたはPOST ::要求モード
    4、複数の値をキー要求:request.POST.getlist( "趣味")
              。5、request.path  :要求パス(パスが取得する、データを取得していません)    

          リクエストURL:HTTP://127.0.0.1:8000 / index.htmlに/ 23であるA. 1 =?
          パス:request.path:/index.html/23
              。6、   request.get_full_path()   :リクエストパス(データパスと取るだろう)への
         要求URL:HTTP://127.0.0.1:?8000 / index.htmlに/ 23 A = 1
         request.get_full_path():? / index.htmlに/ 23 A = 1

  

第三に、との違いは、機能をレンダリングし、機能をリダイレクト

レンダリング:のみページのコンテンツに戻りますが、第2の要求を送信しません。

リダイレクト:2番目の要求は、URLの更新を再生

第四に、逆解析

使用Djangoプロジェクトでは、一般的な要件は、生成されたコンテンツに埋め込まれた(とビューは、ユーザーのURLに表示される、など)や、ナビゲーション処理サーバ(リダイレクト)のためのURLの最終形態を得ることです。

有効期限が切れある程度のURLにつながるしやすいので、強い願いは、URL(面倒、エラーが発生しやすいと拡張可能ではない)、または無関係な特殊なURL生成機構のURLconfを設計は、ハードコードにありません。

言い換えれば、必要とされるのは、機構DRYです。他のほとんどの中で、それはまた、自動的に検索し、時代遅れのURLを置き換えるために、プロジェクトのソースコードを横断することなく更新することができURLを設計することができます。

URLの最初の値を得るために必要なタイプ(位置パラメータ、キーワードパラメータ)やその他の情報は、情報が識別(名前など)そのビューを処理していると思うビューの正しいURLパラメータを見つける必要があります。

Djangoは方法は、URLマッピングURLのデザインが唯一の場所であるようにすることです提供します。あなたは、あなたのURLconfを記入し、両方向にそれを使用します:

  • URLリクエストのユーザー/ブラウザを起動よると、それは正しいDjangoのビューを呼び出し、URLからその必要なパラメータの値を抽出します。
  • ビュー識別子ジャンゴと、その値は、パラメータに関連付けられたURLが渡されます。

最初の方法は、前の章で説明している使用することです。第二の方法は、URLは、リバース、リバースURLのクエリまたは簡単なURLの逆引きが一致する、逆引き参照URLと呼ばれています。

さまざまなレベルのために、必要なURLは、Djangoは逆引き参照URLのためのさまざまなツールを提供しています。

  • テンプレートで:URLテンプレートタグを使用してください。
  • Pythonのコードでは:使用してdjango.core.urlresolvers.reverse() 機能を。
  • プロセスモデルDjangoの例に関連したより高いレベルのコードで:使用get_absolute_url() 方法。

例:

次のURLconfを考えてみます。

コードをコピー
コードをコピー
django.conf.urlsからURLをインポートする

から。インポートビュー

urlpatterns = [ 
    #... 
    URL(R '^記事/([0-9] {4})/ $'、views.year_archive、名前= 'ニュース年のアーカイブ')、
    #... 
]
コードをコピー
コードをコピー

ここでの設計に応じて、アーカイブされたURL指定した年のnnnnが該当します/articles/nnnn/

あなたはそれらを得るためにコードテンプレートの次のメソッドを使用することができます。

コードをコピー
コードをコピー
<aのhref="{%のURL'news-year-archive' 2012 %}"> 2012アーカイブ</a>の

<UL> 
{year_listの%でyearvarため%} 
<LI> <のhref = "{%のurlのニュース年間のアーカイブ」yearvar%} "> {{yearvar}}アーカイブする</a> </ LI> 
{%ENDFOR%} 
</ UL>
コードをコピー
コードをコピー

Pythonのコードでは、そのように使用:

コードをコピー
コードをコピー
django.core.urlresolversから逆輸入
HttpResponseRedirect django.httpインポートから

デフredirect_to_year(リクエスト):
    #... 
    年= 2006 
    #は... 
    HttpResponseRedirectを返す(引数の=(年、 'ニュース年のアーカイブ'(リバース) ))
コードをコピー
コードをコピー

何らかの理由で年間のアーカイブ記事のURLをリリースすることを決定した場合は調整する必要があり、その後、あなただけのURLconfの内容を変更する必要があります。

いくつかのシナリオでは、一般的な図であり、URLとビューの間に1つの関係に多くあります。とき逆引き参照URLこれらのケースについては、ビューの名前だけでは十分ではありません。

 

例:

分析:私たちは、ハードコードされた書き込みを開始したい、死んで書くためにジャンプするアクションのパスです。しかしなど淘宝網、オオヤマネコ、のように定期的に、あなたのページのURLパスは随時変更されます,,新しいものに更新されます。商品の特に数が多い場合でも、あなたは、これは面倒である、変更のサーバーに移動する必要があるので、私たちは問題を解決するためのメカニズムはありませんか?それから私は、次のようなアプローチに基づいて解決しました。ライブの書き込みへのURLパスを入れてください。

1、最初はURLエイリアスを再生します。

ページ内の要素をクリックした場合2、それから{%のURL「エイリアス」%}に書かれたlogin.htmlとで、見て、それはlogin.htmlと,,,私は循環させたのコース,,なりますになりますテスト/ login.htmlと

3は、あなたがあなたの定期的に変更することができ、そして、彼がなくなっているので、別名によると、影響を与えません。

urls.py

 

login.htmlと

結果の要素を表示します。

 

利点がありません:関係なく、あなたがエイリアスを作成する場合は、URLと一致することをどのように変化しますか。HTMLテンプレートの構文では、それは関係なく、あなたは、URLがすべての権利どのように変化するか、将来に対応していないそのURLエイリアスに行きます、実現、彼女は生きて書いた、彼らはハードコードされたように書き始めました。

おすすめ

転載: www.cnblogs.com/lida585/p/10990777.html