ルーティング層ジャンゴ

未知基、周知のグルーピング、逆解析、ルート分布、FBVとCBV

 

    未知のパケット(位置パラメータが自動的に対応するビュー関数に渡され、コンテンツに括弧内正規表現マッチング)

URL(R&LT ' ^テスト/(\ + D)/ '、views.test)、  は、1つ以上のデジタルと一致します

デフテスト(要求、XXX):
     プリント(XXX)
     のリターンはHttpResponse(' テスト' 


    既知パケット(キーパラメータとしてコンテンツへの括弧内の正規表現マッチングは自動的にビューに対応する関数に渡されます)

URL(R&LT ' ^テスト/(?P <年> \ + D)/ '、views.test)、  一致する1つまたは複数のデジタル
        
デフテスト(要求、年):
     プリント(年)
     のリターンはHttpResponse(' テスト'

    
 注意:無名のグループと有名なグループと混同することはできません!
        URL(R '^テスト/(
    
    
\ dは+)/(?P <年> \ D +)/'、views.test) のマッチング形式の複数種類のことではなく、サポート

複数のグループ名も無き
    URL(R ' ^テスト/(\ dは+)/(\ dは+)/ ' 、views.test)、
複数の有名なグループ化
    URL(R ' ^テスト/(?P <年> \ D +)/(?P <XXX> \ D +)/ '、views.test)、

 

 

逆解析:(動的に対応するパス名に従って得られます)

django.shortcuts インポート

       URL(R ' ^ index6668888 / $ '、views.index、名前= ' インデックス' 

各ビュー機能と名称対応関係にルーティングすることができます
#の一意に対応するパスを識別するという名
#のこの名前が一意を複製することはできませんが
        
    フロントエンド
        {%URL ' インデックス'}
        {%のURL エイリアス関係からビューへのルーティング機能に相当することができ}
    
    バックエンド
        (逆にインデックス
        リバース(あなたは、対応関係の別名からのルーティング機能を表示するには

 

不明なパケット逆引き参照

URL(R ' ^テスト/(\ dは+)/ '、views.test、名前= ' リスト' 
バックエンド
印刷(逆(' リスト'、引数=(10 ))、)
フロントエンド {
%URL ' リスト' 10%} user_list = models.User.objects.all()


URL(R
' ^編集/(\ dは+)/ '、views.edit、名前= ' 編集'
フロントエンドのテンプレート構文 {
ため USER_OBJ user_list%} <a href= 'edit/{{ user_obj.pk }}/'> </a>の {%ENDFOR%} ビュー機能 django.shortcuts インポートデフ編集(リクエスト、edit_idを): URL =リバース(' 編集'、引数= (edit_id、)) テンプレート {%のURL ' 編集' edit_id%}

 


有名なのは逆引き参照をグループ化します

バックエンド
       後、既知および未知のパケットは、このフォーム内のパケットである
      プリント(リバース(一覧、引数=(10 ))) 
以下を理解することができる プリント(リバース(一覧、kwargsから= { :10 }))
フロントエンド
#のこの形態において、遠位既知パケットおよび未知のパケットを使用することができる {%のURL 一覧 10%} 以下が分かる {%のURL 一覧年= 10%}

 


要約:逆引き参照のために制服を採用するパケットフォーマットの有名な匿名のパケット

 

バックエンド
     逆(リスト、引数=(10))  デジタルデータは、通常、主キー値である
先端
     {%のURL 一覧 10%} 
逆解析の性質は:ビュー機能に対応する名前へのアクセスを得られます

 

 

 

ルートの配布

各アプリ以下Djangoは独自のurls.pyルーティング層を持つことができ、テンプレートフォルダ、静的フォルダ
プロジェクト名urls.py(全ルート)機能ルーティング関係の観点と一致していないが、分布をルーティングするか
から django.conf.urls インポートを含みます ルート流通経路は常に$終わらないことをルート配布注 URLを(R ' ^ app01 / 'が、(app01_urls)が含まれます) URL(R ' ^ app02 / ' が含まれる(app02_urls)) アプリケーションの新urls.pyファイル、ファイルにルーティングし、ビュー機能間の書面による対応が可能 django.conf.urls インポートURL から app01 インポートビュー urlpatterns = [ URL(R ' ^インデックス/ ' 、views.index) ]

 

FBVとCBV

 

FBV(関数ベースビュー)の  閲覧要求に処理機能を使用することです。

urls.py

django.conf.urls インポート、URLを含める
 django.contribインポート管理者からの
からのMyTest インポートビューを
 
urlpatterns = [
     #のURL(R '^管理/'、admin.site.urls)、 
    URL(R '^インデックス/ '、views.index)、
]

views.py

django.shortcuts インポートレンダリング
 
 
DEF 指数(REQ):
     もし req.method == 'POST':
         印刷( 'メソッドがある:' + req.method)
     のelif req.method == 'GET':
         印刷( 'メソッドがある:' + req.method)
     リターンは(reqは、 'index.htmlを')をレンダリング

 

CBV(クラスベースビュー)の  閲覧要求の処理に使用されます。

urls.py

以下からのMyTest インポートビュー
 
urlpatterns = [
     #のURL(R '^インデックス/'、views.index)、 
    URL(R '^インデックス/ '、views.Index.as_view())、
]

注:URL(R '^インデックス/'、views.Index.as_view())、固定用法です。

views.py

django.views インポート見ます
 
 
クラスインデックス(ビュー):
     デフ(自己、REQ)を取得:
         プリント( 'メソッドがある:' + req.method)
         リターンは(reqは、 'index.htmlを')をレンダリング
 
    デフ投稿(自己、REQ):
         プリント( 'メソッドがある:' + req.method)
         リターン(reqは、 'index.htmlを')レンダリング

注:このクラスは、ビューを継承する必要があり、クラスの関数名は小文字にする必要があります。

 

 

おすすめ

転載: www.cnblogs.com/python-Arvin/p/11898364.html