參數(shù)傳遞方式小結(jié)

get傳參數(shù):/cart/add?sku_id=1&count=3
post傳參數(shù):['sku_id': 1, 'count': 3]
url傳參數(shù):url配置時(shí),捕獲參數(shù)

  # url傳參 示例
    re_path(r'^goods/(?P<goods_id>\d+)$', DetailView.as_view(), name='detail'), # 詳情頁(yè)url
    re_path(r'list/(?P<type_id>\d+)/(?P<page>\d+)$', ListView.as_view(), name='list'),  # 列表頁(yè)

涉及到數(shù)據(jù)的修改,采用post傳參
只涉及到數(shù)據(jù)的捕獲,采用get傳參


商品添加到購(gòu)物車:

  1. 請(qǐng)求方式: 采用ajax post
  2. 傳遞參數(shù): 商品id,商品的數(shù)目

django防止csrf的方式:
1)默認(rèn)打開(kāi)csrf中間件
2)表單post提交數(shù)據(jù)時(shí) 需要加上{% csrf %}標(biāo)簽

防御原理:
1)渲染模板文件時(shí),把{% csrf %}標(biāo)簽 替換為 一個(gè)叫做csrfmiddlewaretoken的隱藏域
2)服務(wù)器交給瀏覽器 保存一個(gè)名為csrftokencookie信息
3)提交表單時(shí),兩個(gè)值(csrfmiddlewaretoken, csrftoken)都會(huì)發(fā)給服務(wù)器。服務(wù)器拿到兩個(gè)值 進(jìn)行對(duì)比,對(duì)比一致 則csrf驗(yàn)證通過(guò),否則 報(bào)csrf錯(cuò)。

表單提交時(shí) 默認(rèn)會(huì)把csrfmiddlewaretoken進(jìn)行提交。
ajax提交時(shí) 也有 csrf驗(yàn)證。而ajax提交時(shí) 需要自己拿到csrfmiddlewaretoken的值 進(jìn)行提交。

ajax 發(fā)起的請(qǐng)求,都在后臺(tái)。在瀏覽器中 是看不到效果的。


前后端 分離時(shí),要確定的幾件事情:

  • 前端是否會(huì)傳遞數(shù)據(jù),傳遞什么數(shù)據(jù)數(shù)據(jù)的格式
  • 前端的訪問(wèn)方式(get, post)
  • 返回什么數(shù)據(jù)給前端,返回?cái)?shù)據(jù)的格式

============================================

request.POST request.GET 獲得的 都是QueryDict類型的值。
QueryDict允許 一個(gè)key對(duì)應(yīng)多個(gè)value。
通過(guò)request.POST.getlist('sku_ids') 獲取sku_ids對(duì)應(yīng)的 多個(gè)value

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容