4, Django获取请求参数

接着上一篇播客代码
演示代码地址:
链接:https://pan.baidu.com/s/1oE88TKRQ6Avp3_UI2msL5Q
密码:g9qj

1, 为什么要获取请求参数?

  • 前后台交互的需要, 譬如:
    • a: 注册用户: 需要携带用户名, 手机号, 密码, 验证码信息
    • b: 用户购物: 需要携带, 商品id, 商品名称, 商品价格信息
    • c: 用户转账: 需要携带, 对方账户, 转账多少钱信息
    • 等等…

2, 前台携带请求参数有哪些方式?

  • a, 查询字符串

    • 譬如: http://127.0.0.1:8000?name=zhangsan&age=13
    • 参数信息是: zhangsan, 13
  • b, 资源分隔符携带

    • 譬如: http://127.0.0.1:8000/zhangsan/23
    • 参数信息是: zhangsan, 13
  • c, 请求体

    • 代码不易演示, 我们通过工具postman来:
      • 在这里插入图片描述
    • 参数信息是: zhangsan, 13
  • d, 请求头

    • 代码不易演示, 我们通过工具postman来:
      • 在这里插入图片描述
    • 参数信息是: zhangsan, 13

3, 如何获取前台的几种参数

  • a, 查询字符串携带参数

    • 1, 根路由(urls.py)

      urlpatterns = [
        path('admin/', admin.site.urls),
        
        # 添加
        path('users/', include('users.urls'))
      ]
      
    • 2, 子路由(users/urls.py)

      from django.conf.urls import url
      from . import views
      urlpatterns = [
         url(r'^index/$', views.index),
      
         #1,查询字符串路由
         url(r'^$', views.query_string),
      ]
      
    • 3, 视图(users/views.py)

      # index函数, 上一篇播客中有省略
      
      # 1,查询字符串视图
      def query_string(request):
      
        # 获取参数
        name = request.GET.get("name")
        age = request.GET.get("age")
      
        # 打印参数
        print("name = " + name)
        print("age = " + age)
      
        return HttpResponse("查询字符串获取参数")
      
    • 4, 浏览器测试

      • 浏览器
        • 在这里插入图片描述
      • pycharm控制台
        • 在这里插入图片描述
  • b, 资源分隔符携带参数

    • 1, 根据路, 和上面a一样
    • 2, 子路由(users/urls.py)
      from django.conf.urls import url
      from . import views
      urlpatterns = [
        url(r'^index/$', views.index),
      
        #1,查询字符串路由
        url(r'^$', views.query_string),
      
        # 2,资源分隔符携带
        url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function),
      ]
      
    • 3, 视图(users/views.py)
      # 2, 资源分隔符携带
      def resource_function(request,name,age):
      
        # 打印参数
        print("name = " + name)
        print("age = " + age)
      
        return HttpResponse("资源分隔符获取参数")
      
    • 4, 浏览器测试
      • 浏览器
        • 在这里插入图片描述
      • 控制台
        • 在这里插入图片描述
  • c, 请求体携带参数

    • 1, 根据路, 和上面a一样

    • 2, 子路由(users/urls.py)

      from django.conf.urls import url
      from . import views
      urlpatterns = [
         url(r'^index/$', views.index),
      
         #1,查询字符串路由
         url(r'^$', views.query_string),
      
         # 2,资源分隔符携带
         url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function),
      
         # 3,请求体携带参数
         url(r'^body/$', views.body_function),
      ]		
      
    • 3, 视图(users/views.py)

      # 3,请求体携带参数
      def body_function(request):
      
        # 获取参数
        data = request.body.decode()
      
        # 打印参数
        print(data)
      
        return HttpResponse("请求体携带参数")
      
    • 4, postman测试

      • postman发送请求
        • 在这里插入图片描述
      • pycharm控制台输出
        • 在这里插入图片描述
  • d, 请求头

    • 1, 根路由, 和上面a一样

    • 2, 子路由(users/urls.py)

      from django.conf.urls import url
      from . import views
      urlpatterns = [
        url(r'^index/$', views.index),
      
        #1,查询字符串路由
        url(r'^$', views.query_string),
      
        # 2,资源分隔符携带
        url(r'^(?P<name>[a-z]+)/(?P<age>\d+)/$', views.resource_function),
      
        # 3,请求体携带参数
        url(r'^body/$', views.body_function),
      
        # 4,请求头携带参数
        url(r'^header/$', views.header_function),
      ]
      
    • 3, 类视图(users/views.py)

      # 4,请求头携带参数
      def header_function(request):
      
        # 获取参数
        name = request.headers.get("name")
        age = request.headers.get("age")
      
        # 打印参数
        print("name = " + name)
        print("age = " + age)
      
        return HttpResponse("请求头携带参数")
      
    • 4, postman测试

      • postman
        • 在这里插入图片描述
      • 控制台输出
        • 在这里插入图片描述

若有不清楚的, 添加QQ群
免费答疑服务: 772044423

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值