五、自定義轉化器,檢視層之httprequest對像、HttpResponse、JsonRepons
阿新 • • 發佈:2018-12-05
一、虛擬環境
1 用pychanrm建立--->files-->newproject--->選擇虛擬環境 2 settings-->project建立 3 用命令列建立,詳見https://www.cnblogs.com/liuqingzheng/p/9508851.html
二、django 2.0和django 1.0 路由層區別
(*****url,re_path分組分出來的資料,是字串) -re_path:跟1.0的url用法相同 -path:傳的路徑,是準確路徑 -re_path ---->等於原來的url (re_path模組) 5個轉換器-->path('test/<path:year>', views.re_test), str,匹配除了路徑分隔符(/)之外的非空字串,這是預設的形式 int,匹配正整數,包含0。 slug,匹配字母、數字以及橫槓、下劃線組成的字串。 uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。 path,匹配任何非空字串,包含了路徑分隔符(/)(不能用?)
-自定義轉換器(django2.0)
print('%010d'%12) # 結果 :0000000012 (共10位,不足的用0補齊)
urls.py
# 1、定義一個類: # 自定義轉換器 class MyCon: # 寫一個正則表示式,名字必須命名為regex regex='[0-9]{4}' # 匹配出來的資料,會傳到這裡,retrun回去的,會被檢視函式接收 def to_python(self,value): return int(value) # ××× # return value # 字串型別 # 反向解析用的 def to_url(self,value): return "%04d" %value # 2 匯入模組 from django.urls import register_converter # 轉換器 register_converter register_converter(MyCon,'yyy') # 3 寫入表示式 urlpatterns = [ path('test/<yyy:year>',views.re_test), ]
views.py
def re_test(request,year): return HttpResponse('ok')
訪問:http://127.0.0.1:8000/test/2018
返回:ok
urls.py
from django.urls import path,re_path,register_converter from app01 import views class MyCon: regex='[0-9]{4}' def to_python(self,value): return value def to_url(self,value): return "%04d" %value register_converter(MyCon,'yyy') urlpatterns = [ path('test/<yyy:year>',views.re_test,name='test'), ]
views.py
from django.shortcuts import render,HttpResponse,reverse def re_test(request,year): url=reverse('test',args=(9,)) print(url) return HttpResponse('ok')
返回:/test/0009
三、APPEND_SLASH
settings.py
# 預設為True ,設定為False 後 http://127.0.0.1:8000/test 不會為test補全後面的'/',開啟網頁後會成為404(若沒有這個頁面的話) APPEND_SLASH=False
四、檢視層之http request對像