首页 > 解决方案 > 从 Django API 检索数据并将其存储在数据库中

问题描述

我用 django 创建了一个 API

我想做的是从我的 django API 中获取数据并将其存储在我的数据库中。

序列化程序.py

 from rest_framework import serializers, generics
 from Usersapi.models import Userdata

 class UserSerializer(serializers.HyperlinkedModelSerializer):
     class Meta:
         model = Userdata
         fields = '__all__'

视图集.py

 from Usersapi.models import Userdata
 from .serializers import UserSerializer
 from rest_framework import viewsets

 class UserViewSet(viewsets.ModelViewSet):
     queryset = Userdata.objects.all()
     serializer_class = UserSerializer

主要-> urls.py

 from django.contrib import admin
 from django.urls import include, path
 from rest_framework.urlpatterns import format_suffix_patterns
 from .router import router


 urlpatterns = [
      path('admin/', admin.site.urls),
      # path('',include('Usersapi.urls')),
      path('client/',include('clientside.urls')),
      path('api/', include(router.urls)) 
      ] 

这是我试图从 API 客户端检索数据的地方——>views.py

 from django.shortcuts import render
 import coreapi
 import json
 from django.views import generic
 import io
 from rest_framework.parsers import JSONParser   

 def home(request):
     client = coreapi.Client()
     response = client.get('http://127.0.0.1:8000/api/Usersapi/1/')

     stream = io.BytesIO(response)
     data = JSONParser().parse(stream)

     name = data.get("name")
     age = data.get("age")
     gender = data.get("gender")
     user = UserReceived.objects.create( name = name, age= age, gender = gender)
     user.save()


     return render(request, 'books.html')

此代码不起作用。如何从 (' http://127.0.0.1:8000/api/Usersapi/1/ ') 检索数据并将其存储在我的 models.py 即数据库中

客户端 --> models.py

 from django.db import models

 class UserReceived(models.Model):

       name = models.CharField(max_length=100)
       age = models.PositiveIntegerField()
       gender = models.CharField(max_length=50)

标签: djangodjango-rest-framework

解决方案


您的问题是 corapi 客户端已经返回了一个有序的字典。

这将起作用:

def home(request):
    client = coreapi.Client()
    data = client.get('http://127.0.0.1:8000/api/usersapi/1/')

    name = data.get("name")
    age = data.get("age")
    gender = data.get("gender")
    user = UserReceived.objects.create(name=name, age=age, gender=gender)
    user.save()

    return HttpResponse(f"OKAY, got and saved user {name}")

我在这里创建了一个最小的工作示例: https ://github.com/CarliJoy/MWE_SO_59668515


推荐阅读