• 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)

  • 相关阅读:
    C# 1.0 到 C# 3.0 委托创建过程的发展
    C#禁用窗体最大化按钮
    TeamViewer 通过Internet进行远程访问和远程支持
    c# 匿名方法
    BeginInvoke会重新开一个线程
    c# 线程调用带参数的函数
    c# msdn 委托
    判断某张表是否存在在数据库中(access 2003 与sql server 2008)
    新浪微博自动发送微博 功能已实现(net)
    validateRequest="false" 在asp.net 4.0中失效的解决办法
  • 原文地址:https://www.cnblogs.com/chvv/p/10039219.html
Copyright © 2020-2023  润新知