url配置(urlconf)就像django 所支撐**的目錄。它的本質是url與要為該url呼叫的檢視函式之間的對映表;你就是以這種方式告訴django,對於這個url呼叫這段**,對於那個url呼叫那段**。
'''urlpatterns = [
url(正規表示式, views檢視函式,引數,別名),
]引數說明:
乙個正規表示式字串
乙個可呼叫物件,通常為乙個檢視函式或乙個指定檢視函式路徑的字串
可選的要傳遞給檢視函式的預設引數(字典形式)
乙個可選的name引數
'''一、url的反向解析
如上述,url中的正規表示式即為請求的路徑,www.cppcns.com根據路徑匹配執行對應的檢視函式,如下,當我們請求路徑符合正規表示式要求,就會執行對應的login函式:
其中login函式為:
login.html檔案為:
根據以上我們所寫的**邏輯,當通過get請求/login/路徑時,我們執行符合此請求路徑對應的login()函式,函式渲染乙個login.htl的登入頁面,當使用者驗證完資訊點選提交按鈕時,再次以post形式請求/login/對應的login()函式。
但是,在某些情況下,我們需要更改請求路徑的正規表示式,即更換乙個請求路徑,這時候我們就需要對上述的url中的正規表示式和login.html中的提交路徑同時進行更改成我們想要的,但是當我們有很多個檔案和位置都有請求/login/的時候,我們乙個個的手動的更改顯然不是很合理。這就需要用到反向解析,也就是url中別名引數的作用,具體例項如下:
以上即稱為反向解析,無論url中請求路徑的如何更改,只要別名不改,程式中對此函式的請求都可以通過別名反向解析的形式找到。
二、including other urlconfs
django專案中建立應用的命令為:
py manage.py startapp app01(app01為專案名)
在django專案建立後,會有乙個url程式設計客棧.py檔案,用於對映不同請求路徑對應的函式,但是當我們乙個django專案中有很多應用的話,各個專案的url的對映關係均放在此檔案中顯然不妥,不利於**間的解耦。此時需要在此url檔案中設定including other urlconfs,設定後各應用對應的url對映關係就可以放在應用自己目錄下urls.py檔案中。如下:
此情況訪問應用下路徑對映函式的的方式如下例所示:
三、正則字串引數
1、無名分組
通過在正則字元中使用一對括號,就可以實現分組,並可以獲得分組的引數,如下例:
url(r'^articles/(\d)/(\d)/$', views.articles2), #articles2(request,組1引數,組2引數)
當請求路徑為:路徑符合上述正規表示式字串,執行articles2(request,2014,12)函式,即要求定義articles2函式時候必須要接收三個引數,對映過程是按照位置進行傳參,函式例項如下:
2、有名分組
上面的示例使用簡單的、沒有命名的正規表示式組(通過圓括號)來捕獲url 中的值並以位置 引數傳遞給檢視。在更高階的用法中,可以使用命名的正規表示式組來捕獲url 中的值並以關鍵字 引數傳遞給檢視。在python 正規表示式中,命名正規表示式組的語法是(?ppattern),其中name是組的名稱,patt是要匹配的模式。
url(r'^articles/(?p\d)/(?p\d)/$', views.articles3) #articles3(request,y=對應引數,m=對應引數)
當請求路徑為:路徑符合上述正規表示式字串,執行articles3(request,y=2014,m=12)函式,即要求定義articles3函式時必須要接收三個引數,且引數必須為y和m,對映過程是按照關鍵字進行傳參,函式例項如下:
def articles3(request,y,m): #引數y和m必須與分組名一致,因為是按照關鍵字傳參,位置隨意
四、redirect函式
redirect()函式也稱為重定向函式,現在以第一部分中登陸例項為講述其執行過程:
第一次網頁請求:
請求url: 請求型別:get 無請求資料
login/-------> views.login------>login()
響應到乙個login.html頁面
第二次按鈕提交:
請求url: 請求型別:post 有請求資料
login.html/-------> views.login------>login()
響應的return redirec程式設計客棧t("/index/")到瀏覽器,通知瀏覽器再傳送請求:"/index/"
請求url: 請求型別:get 沒請求資料
index/ --->url(r'^index/', views.index),---->index()
響應乙個index.html
有上述過程分析可知,重定向函式redirect在重定向的過程中實際是接受到兩次響應,第一次通過響應告訴瀏覽器重新傳送請求到需要重定向的路徑,第二次是瀏覽器傳送重定向路徑請求後得到響應結果。
五、模板層
1、模板語法之變數
在 django 模板中遍歷複雜資料結構的關鍵是句點字元 ,不同資料型別的資料通過據點字元取值的方式如下例所示:
def index(request):
lis=[111,222,333]
dic =
class person():
def __init__(self,name,age):
self.name=name
self.age=age
def dream(self):
return ("dream.....")
alex=person(name="alex",age=34)
egon=person(name="egon",age=9000)
nacha=person(name="nacha",age=3)
person_list=[alex,egon,nacha]
return render(request,"index.html",)
index.html檔案:
} //通過索引取,結果:222
} //通過key取,結果:alex
} //通過索引取到物件,通過物件屬性取到屬性值
} //通過迴圈取到物件,根據物件屬性取到屬性值
},}} //可以取到物件的方法,前提是此方法不需要引數,且有返回值,且取值時不需要括號
本文標題: python中django學習心得
本文位址:
python學習之 Django初探
django的安裝 在官網上可以看到,安裝有2種方法,一種是直接pip,還有一種是git 我在我的windows上安裝django,已經配置好了script的路徑 直接esay install django django被安裝在 c python27 lib site packages 建立第乙個工...
Python基礎學習 Django基礎
總結一下今天的學習 1,使用黑視窗構建django專案失敗,至今未找到原因 2,使用django結合eclipse構建了乙個簡單的helloworld 介面 3,在模板檔案html檔案裡面編寫 顯示views中傳來的字串 字典 物件 方法 列表等 搭建過程 見笑了 開啟eclipse,安裝環境 新建...
Python程式設計 Django初步學習
安裝完django 執行cmd 建立專案 python django admin startproject myblog 檢視專案內容 python manage.py wsgi.py python web server gateway inte ce python伺服器閘道器介面 啟動伺服器,埠號...