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)

  • 相关阅读:
    Mahout机器学习平台之聚类算法具体剖析(含实例分析)
    算法导论 动态规划 钢条分割问题的自底向上解法
    玩转Linux网络namespace-单机自环測试与策略路由
    Unity KillCount
    android 项目中使用到的网络请求框架以及怎样配置好接口URL
    Gradle 1.12 翻译——第十四章. 教程
    MySQL 性能优化
    Git教程
    Eclipse常用小知识汇总
    自定义全局异常捕获
  • 原文地址:https://www.cnblogs.com/chvv/p/10039219.html
Copyright © 2011-2022 走看看