Jsonデータ処理djangoでrequest.post/bodyの違い

9270 ワード

プロジェクトの説明
CMDB資産を入庫する場合、クライアントで収集したデータはrequestsモジュールを介してサービス側に要求され、サービス側はdjango定義ビュー関数を介してデータを受信し、ステータスを返す必要があります.
方式1:サービス側はrequestを通過する.body受信要求
クライアントコード

import requests
import json


def asset():
    info = {
      'hostname': 'c.com', 'memory': '16G'}
    url = "http://127.0.0.1:8000/api/asset/"
    r1 = requests.post(
        url=url,
        data=json.dumps(info).encode('utf-8')   #             json         ,       
    )
    print(r1.text)                                #r1.text  server      

asset()

View Code
serverコード

from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json


@csrf_exempt                    #        csrf   ,      post     tooken
def asset(request):
    """
                  
    :param request:
    :return:
    """

    info = json.loads(request.body.decode('utf-8'))
    """
    b'{"hostname": "c.com", "memory": "16G"}
    #          json        ,             
    """"

    print(info)
    return HttpResponse("   ")

View Code
方式2:サービス側はrequestを通過する.POST受信要求
クライアントコード

import requests
import json


def asset():
    info = {
      'hostname': 'c.com', 'memory': '16G'}
    url = "http://127.0.0.1:8000/api/asset/"
    r1 = requests.post(
        url=url,
        data={
      'hostname':'ngix','mem':'6g'}     # http      hostname:ngix&mem:6g     ,  request.POST       
    )
    print(r1.text)                                #r1.text  server      

asset()

View Code
serverコード

from django.shortcuts import render,HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json


@csrf_exempt                    #        csrf   ,      post     tooken
def asset(request):
    """
                  
    :param request:
    :return:
    """
    print(request.POST)               #request.POST                 ,requests       
    #            
    """
     http            :
       hostname:ngix&mem:6g             ,reques.POST       
    """
    #print(request.body)     #request.body               ,       body     
    return HttpResponse("   ")

View Code
まとめ
djangoプロジェクトでPost送信要求データを取得する場合、requestを使用する.POSTで取得するデータがないのは、データが送信されていない場合ではない、可能な場合は相手のデータフォーマットrequestである.POST認識処理ができず、
このときrequestを通過することができる.どんなフォーマットのデータでも調べてみろ全てが受信できるbodyが受信したのは,オリジナルのリクエストボディデータである.
 
転載先:https://www.cnblogs.com/fanggege/p/10260387.html