首页 > 解决方案 > 无法使用 Python 请求将所有数据存储到 Django 数据库中

问题描述

无法将所有数据存储到 Django 数据库中。它从开放的 API 打印正确的数据列表,但不存储。

但是,如果我在(client.py)中给出 data1 的直接值,例如:

data1 = { 'employee_name':'姓名', 'employee_salary':'20000', 'employee_age':'22', 'profile_image':' ' }

然后它将上述字典值存储到 Django 数据库中。但是我使用请求获取的数据是一个列表。它在 cmd 中打印但不存储在 DB 中。


client.py file 

def get_alldata():
    url1 = "http://dummy.restapiexample.com/api/v1/employees"
    url = "http://127.0.0.1:8000/employee/"

    my_response  = requests.get(url1)
    token = get_token()
    header = {'Authorization' : f'Token {get_token()}'}
    data1 = [ my_response.json() ]

    for d in range(len(data1)):
        payload = data1[d]
        res = requests.post(url, data=data1[d] , headers=header )
        print(data1[d])

get_alldata()

这是 Api.py 文件,其中包含在 django rest 框架中使用序列化程序的 get 和 post 方法。


from rest_framework.authtoken.views import ObtainAuthToken 
from rest_framework.authtoken.models import Token 
from rest_framework.response import Response 
from rest_framework.views import APIView
from rest_framework import status
from employee.serializers import *


class EmployeeAuthentication(ObtainAuthToken):
    def post(self,request, *args, **kwargs):

        serializer = self.serializer_class(data=request.data, context={'request':request})
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token , created = Token.objects.get_or_create(user=user)

        return Response(token.key)


class EmployeeView(APIView):

    def get(self, request):

        model = Employee.objects.all()
        serializer = EmployeeSerializer(model, many=True)
        return Response(serializer.data)



    def post(self, request):

        serializer = EmployeeSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()

            return Response(serializer.data, status=status.HTTP_201_CREATED)

        return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

标签: pythondjango-rest-frameworkpython-requests

解决方案


我得到了解决方案。代码中还没有问题。问题是我从开放 API 获取的数据在无法存储到 Django 数据库中的字段中包含 Null 值。如果有人遇到同样的问题,请不要获取任何具有空值的字段。


推荐阅读