簡體   English   中英

從 Django API 檢索數據並將其存儲在數據庫中

[英]Retrieve data from Django API and store it in database

我用 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)

你的問題是 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM