美文网首页
参数传递方式小结

参数传递方式小结

作者: 花括弧 | 来源:发表于2019-08-05 17:52 被阅读0次

    get传参数:/cart/add?sku_id=1&count=3
    post传参数:['sku_id': 1, 'count': 3]
    url传参数:url配置时,捕获参数

      # url传参 示例
        re_path(r'^goods/(?P<goods_id>\d+)$', DetailView.as_view(), name='detail'), # 详情页url
        re_path(r'list/(?P<type_id>\d+)/(?P<page>\d+)$', ListView.as_view(), name='list'),  # 列表页
    
    

    涉及到数据的修改,采用post传参
    只涉及到数据的捕获,采用get传参


    商品添加到购物车:

    1. 请求方式: 采用ajax post
    2. 传递参数: 商品id,商品的数目

    django防止csrf的方式:
    1)默认打开csrf中间件
    2)表单post提交数据时 需要加上{% csrf %}标签

    防御原理:
    1)渲染模板文件时,把{% csrf %}标签 替换为 一个叫做csrfmiddlewaretoken的隐藏域
    2)服务器交给浏览器 保存一个名为csrftokencookie信息
    3)提交表单时,两个值(csrfmiddlewaretoken, csrftoken)都会发给服务器。服务器拿到两个值 进行对比,对比一致 则csrf验证通过,否则 报csrf错。

    表单提交时 默认会把csrfmiddlewaretoken进行提交。
    ajax提交时 也有 csrf验证。而ajax提交时 需要自己拿到csrfmiddlewaretoken的值 进行提交。

    ajax 发起的请求,都在后台。在浏览器中 是看不到效果的。


    前后端 分离时,要确定的几件事情:

    • 前端是否会传递数据传递什么数据数据的格式
    • 前端的访问方式(get, post)
    • 返回什么数据给前端,返回数据的格式

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

    request.POST request.GET 获得的 都是QueryDict类型的值。
    QueryDict允许 一个key对应多个value
    通过request.POST.getlist('sku_ids') 获取sku_ids对应的 多个value

    相关文章

      网友评论

          本文标题:参数传递方式小结

          本文链接:https://www.haomeiwen.com/subject/dkfvdctx.html