前端反向解析 應用場景:通過訪問a路由,到達a的對應視圖函數,函數到達對應的前端a標簽 a標簽的路徑是b路由,如果我們在后端改變b路由的路徑,那么a標簽便無法訪問 到b路由,只能手動在前端改變a標簽的路徑,我們可以給后端的b路由添加一個 name='user'屬性值,通過user來綁定路徑,我們在前端{% url 'user' %}這樣 書寫,可以通過user來動態解析后端路徑
后端反向解析: 我們需要導一個reverse模塊,res=reverse('user') ,user是后端路由的name的值 打印res就是路由的路徑,只要通過name的值就可以找到前面的路徑。
分組前端反向解析: 前端a標簽的路徑滿足正則表達式就行,前端的代碼{% url name屬性值 滿足正則的值} 記住代碼的執行順序就行,你前端一點a標簽,a標簽的代碼剛好能滿足后端的匹配條件 那么肯定能解析出地址
無名分組后端反向解析 res=resvers('name屬性值', args(滿足正則值,)) print(res) 來動態解析地址,只要能匹配就能解析
有名分組的反向解析 前端: {% url 1 %}推薦使用(無論有名無名都可以) {% url year=1 %} 可以使用后端 res=sevser('add' args=(1,))有名無名都能用(推薦) res=severs('add' kwargs={year:1}有名用
有名分組:
用括號將正則括起來,被括號括起來的值會被當成位子實參傳給
后面的視圖函數的形參,位置傳參的特點是一一對應,如果形參為
args,打印出來res則會被元組的形式
有名分組 (?P<year>[0-9]{4})會將year=正則匹配的值當成關鍵字實參傳給后面的函數為形參 關鍵字傳參特點,(year=2019 ,month=12)>>>對應形參必須為(year,month) 且形參調換位置,值不會改變
路由分發: 第一步,創建APP,在不同的app下創建自己的urls 第二步,在項目總路由導一個模塊include 第三步,在項目urls寫下url(r^app名/', include('app名.urls ')) 第四步,去分發的app下的urls文件夾寫下url(r^函數名/’,view.函數名) 第五步,去對應的view,寫下對應的視圖函數 思路:請求先經過總路由匹配,匹配成功后再去對應的app文件下的 urls匹配,匹配成功再執行對應的視圖函數,注意不能在總路由加$
返回前端json格式的數據: 方法一 res={'name':'egon'} return(json.dumps(res)) 方法二 return(JsonResponse(res))
文件上傳 聯想一下之前的文件上傳,還要解決粘包,如今用Django怎么上傳? 第一步:得提交文件,用form表單,提交方式POST,enctype=multipart/form-data 第二步:獲取文件對象,request.FILES.get(html中的文件名) 第三步:file_obj.name,獲取文件名 第三步;打開文件寫,至于下載到哪?自己可以配置路徑 for line in file_obj: f.write(line)
?
?
?
?
?