zoukankan      html  css  js  c++  java
  • request

    Django的原生request:

        浏览器 ------------- 服务器

        "GET url?a=1&b=2 http/1.1 user_agent:Google contentType:urlencoded "
        "POST url http/1.1 user_agent:Google contentType:urlencoded a=1&b=2"


      如果是GET请求:    

      #http://127.0.0.1:8000/books/?a=1&b=2
      print(request._request.body) #b'' request._request.body取的是请求体的数据,GET请求没有请求体 为空
      print(request._request.GET) #<QueryDict: {'a': ['1'], 'b': ['2']}>#取到的是url中的数据

        
      request.get :拿到的是url?后面的数据
      request.body: a=1&b=2 拿到的是请求体里面的数据,没有经过解析的
      request.POST:
              会判断 contentType是不是urlencoded:如果是转换成字典格式 a=1&b=2----->{"a":1,"b":2}
              如果发的json数据,request.POST取不到值,request.body取到的是json字符串


    from rest_framework.views import APIView
    class PublishView(APIView):
    def get(self,request):

    # restframework
    # 取数据
    # print("request.data", request.data)
    # print("request.data type", type(request.data))
    # print(request._request.GET)
    # print(request.GET)
    # 序列化
    # 方式1:
    # publish_list=list(Publish.objects.all().values("name","email"))

    # 方式2:
    # from django.forms.models import model_to_dict
    # publish_list=Publish.objects.all()
    # temp=[]
    # for obj in publish_list:
    # temp.append(model_to_dict(obj))

    # 方式3:
    # from django.core import serializers
    # ret=serializers.serialize("json",publish_list)

    # 序列组件
    publish_list = Publish.objects.all()
    ps = PublishModelSerializers(publish_list, many=True)
    return Response(ps.data)

    def post(self,request):
    # 取数据
    # 原生request支持的操作
    # print("POST",request.POST)
    # print("body",request.body)
    # # print(request)
    # print(type(request))
    # from django.core.handlers.wsgi import WSGIRequest

    获取旧的request为request._request.POST  request._request.GET
    # 新的request支持的操作
    # print("request.data",request.data)
    # print("request.data type",type(request.data))字典类型


    #
    # post请求的数据
    ps = PublishModelSerializers(data=request.data)
    if ps.is_valid():
    print(ps.validated_data)
    ps.save() # create方法
    return Response(ps.data)
    else:
    return Response(ps.errors)

  • 相关阅读:
    Linux上安装Oracle 10g 装后感
    分享16个javascript&jQuery的MVC教程
    6个出色的基于JQuery的Tab选项卡实例
    8 个高可用的 jQuery 表单验证插件
    6 套多点触摸屏的手势图标集
    PHP V5.3 中的新特性,第 4 部分: 创建并使用 Phar 归档
    精选15个国外最流行的CSS框架
    PHP V5.3 中的新特性,第 1 部分: 对象接口的变化
    分享10个便利的HTML5/CSS3框架
    XAMPP下pear安装
  • 原文地址:https://www.cnblogs.com/chvv/p/10039219.html
Copyright © 2011-2022 走看看