1. 程式人生 > >python之Django框架篇-進階三

python之Django框架篇-進階三

1. 檢視(接收請求返回響應那部分)
		1. CBV(class base view)和FBV(function base view)
	
		2. request物件
			1. 之前學過的
				1. request.method    --> 獲取請求的方法(GET、POST等)
				2. request.GET       --> 通常用來獲取URL裡面的引數  
					127.0.0.1:8000/edit_book/?id=1&name=yimi
					request.GET --> {"id":1, "name":"yimi"}
					request.GET.get("id")
				3. request.POST      --> 用來獲取POST提交過來的資料
					request.POST.get("book_name")
			2. 補充其他常用的:
				1. request.path_info   --> 獲取使用者請求的路徑(不包含IP和埠和URL引數)
				2. request.body     
	
		3. response
			基礎必備三件套(求學要嚴謹)
			1. HttpResponse        --> 返回字串內容
			2. render              --> 返回一個html頁面             
			3. redirect            --> 返回一個重定向(告訴瀏覽器再去訪問另外的網址)
			
			4. JsonResponse
			
	2. 路由系統(urls.py)  https://blog.csdn.net/qq_27695659/article/details/85056290
		1. 正則表示式的模糊匹配
		2. 分組匹配        --> 相當於給檢視函式傳遞位置引數
		3. 分組命名匹配    --> 相當於給檢視函式傳遞關鍵字引數
			(兩個不要混合使用)
			
---------------------------- 這裡是坎 ------------------------------------
			
		4. 反向解析URL
			本質上就是給url匹配模式起別名,然後用過別名拿到具體的URL路徑
			
			1. 怎麼起別名?
				在url匹配模式中,定義name="別名"
			2. 如何使用?
				1. 在模板語言裡面使用:
					{% url "別名" %}  --> 得到具體的URL路徑
				2. 在檢視中如何使用:
					from django.urls import reverse
					
					reverse("別名")  --> 得到具體的URL路徑
			3. 如何傳引數?
				1. 模板語言中:
					{% url "別名" 2018 "nb" %}
				2. 檢視函式中
					傳位置引數:
						reverse("別名", args=(2018, "nb"))
				
					傳關鍵字引數:
						reverse("別名" kwargs={"year": 2018, "title": "nb"})
			4. namespace
				為了防止不同的app下面的url匹配模式有重複的別名