Невозможно сохранить все данные в Django базе данных, используя Python Запросы - PullRequest
0 голосов
/ 10 апреля 2020

Невозможно сохранить все данные в базе данных Django. Он печатает правильный список данных из открытого API, но не сохраняет.

Но если я даю прямые значения data1 в (client.py), например, для:

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

Затем он сохраняет вышеуказанные значения словаря в Django database. Но данные я получаю с помощью запросов список. Он печатает в cmd, но не хранит в БД.


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, в который входит метод get и post с использованием сериализаторов в django рамки отдыха.


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)

1 Ответ

0 голосов
/ 13 апреля 2020

Я получил решение. В коде еще нет проблем. Проблема в том, что данные, которые я получал от открытого API, содержат значение Null в поле, которое не удалось сохранить в Django базе данных. Если у кого-то возникла такая же проблема , НЕ ПОЛУЧАЙТЕ любое поле, имеющее нулевое значение.

...