欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

4, Django获取请求参数

程序员文章站 2022-07-14 22:33:23
...

接着上一篇播客代码
演示代码地址:
链接: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来:
      • 4, Django获取请求参数
    • 参数信息是: zhangsan, 13
  • d, 请求头

    • 代码不易演示, 我们通过工具postman来:
      • 4, Django获取请求参数
    • 参数信息是: 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, 浏览器测试

      • 浏览器
        • 4, Django获取请求参数
      • pycharm控制台
        • 4, Django获取请求参数
  • 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, 浏览器测试
      • 浏览器
        • 4, Django获取请求参数
      • 控制台
        • 4, Django获取请求参数
  • 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发送请求
        • 4, Django获取请求参数
      • pycharm控制台输出
        • 4, Django获取请求参数
  • 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
        • 4, Django获取请求参数
      • 控制台输出
        • 4, Django获取请求参数

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

相关标签: django