Django-url路由映射與views邏輯處理

來源:互聯網
上載者:User

標籤:返回   參數   建立   檔案   conf   urls.py檔案   imp   render   正則   

一、urls.py模組

  路由映射模組,主要完成url與views視圖函數的映射。

  當一個url請求到來時,會按照這個模組中的url地址從上到下進行匹配,如果匹配成功,將執行映射試圖中的函數;反之將返回404錯誤。

二、url配置

  1.urlpatterns

urlpatterns = []

  裡面存放一條條的路由映射關係。

  2.url

url(Regex, 映射函數,參數[可選],別名[可選])

  3.配置方式

from django.conf.urls import urlfrom django.contrib import adminfrom testfile import viewsurlpatterns = [    url(r‘^admin/‘, admin.site.urls),   #系統產生的映射                                                  #注意裡面的任意一條映射匹配成功,後面的則不在匹配    url(r‘^articles/2003/$‘, views.special_case_2003),                           #表示articles/2003/這個路徑映射views模組的special_case_2003函數    url(r‘^articles/([0-9]{4})/$‘, views.year_archive),                        #表示2003可以是0-9的任意4個數字    url(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive),            #表示匹配二級目錄    url(r‘^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail),  #表示匹配三級目錄]

  注意:上面匹配都加了小括弧,這些括弧裡面的值會當作參數傳遞到後面的函數中,也就是,views.special_case_2003中.....

二、views視圖邏輯處理

  1.HttpResponse(request,str)(request參數必須指定)

  定義的函數必須,定義一個形式參數,這個形式參數接收的url請求資訊對象,可以通過這個形式參數的各種方法擷取到各種請求資訊  向使用者返回資訊,必須在函數結尾return,如果是要給使用者返回一串字串,那就必須返回HttpResponse方法,參數是要返回的字串,需要先匯入這個方法

  2.render(request,"index.html",context)

該函數要完成兩個個操作:    1.將從資料庫擷取的資料填充在{{}}之間    2.渲染html頁面並返回給請求端

  3.邏輯處理

from django.shortcuts import render,HttpResponsedef demo(request,path): //path是url匹配加括弧預設傳遞過來的參數    print(request.method)       #擷取使用者請求的路徑    return HttpResponse(path)  #將路徑返回到頁面

  注意:要擷取路徑時,需要在路由映射哪裡用正則的分組()號,將要擷取的路徑分組,也就是括起來,如果路由映射裡有多個分組,邏輯函數就需要多個形式參數接收.

  為了更好理解路徑參數是如何傳遞過來的,我們重新來看看url的配置

from django.conf.urls import urlfrom django.contrib import adminfrom app1 import viewsurlpatterns = [    url(r‘^admin/‘, admin.site.urls),   #系統產生的映射    url(r‘^articles/([0-9]{4})/([0-9]{2})/$‘, views.month_archive),            #表示匹配二級目錄    url(r‘^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$‘, views.article_detail),  #表示匹配三級目錄]

  views.py函數參數配置

def month_archive(request,year,month): //這裡的參數與路由中的括弧是匹配的,    pass

  當然,在url正則匹配的時候,我們也可以給分組命名,如:

from django.conf.urls import urlfrom django.contrib import adminfrom testfile import viewsurlpatterns = [    url(r‘^admin/‘, admin.site.urls),   #系統產生的映射    url(r‘^(?P<year>articles/2003)/$‘, views.month_views),    #表示articles/2003/這個路徑映射views模組的month_views函數

  那麼在views視圖中,我們可以這樣來接受這個路徑參數:

from django.shortcuts import render,HttpResponse# Create your views here.def month_view(request,year):    print(year)    return render(request,‘index.html‘)

三、路由配置include方式

  如果一個網站很多,有很多app應用,那麼就需要很多路由分發。如果將所有的路由分發都放在urlconf檔案下,這樣會使得檔案不易於管理,為此,我們可以給每一個app都建立一個urls.py檔案,然後再urlconf中的urlpatterns中將該urls.py檔案包含進來就行了。

from django.conf.urls import include, url # 匯入全域urlurlpatterns = [    url(r‘^bug‘, include(‘testfile.urls‘)),   #將訪問路徑以bug開頭的路徑分發到app1下的urls.py模組裡進行路由映射]

  這樣,我們可以在testfile的urls下配置屬於testfile的所有路由規則和邏輯處理函數。

   

 

Django-url路由映射與views邏輯處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.