我们如何 POST 使用基于函数的视图在 django rest 框架中获取数据?
How do we POST data in django rest framework using function based views?
我是 django rest 框架 (DRF) 的新手,我需要使用基于函数的视图 (FDV) POST
一些数据。我通过这种方式成功使用了 GET
方法,但不知道如何使用 POST 方法向数据库添加值。
# app/models.py
class Item(models.Model):
name = models.CharField(max_length=50)
quantity = models.IntegerField()
price = models.FloatField()
# app/urls.py
urlpatterns = [
path('', views.get_data_list, name='list'),
path('post_val/', views.post_data, name='post_val'), # need to implement
]
# app/serializers.py
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('id', 'name', 'quantity','price')
# app/views.py
from django.http.response import JsonResponse
from rest_framework.parsers import JSONParser
from .models import Item
from .serializers import ItemSerializer
from rest_framework.decorators import api_view
@api_view(['GET',])
def get_data_list(request):
if request.method == 'GET':
items = Item.objects.all()
items_serializer = ItemSerializer(items, many=True)
return JsonResponse(items_serializer.data, safe=False)
@api_view(['POST',])
def post_data(request):
#TO DO
如果我想使用 POST 方法将像这样的新数据 {name:"Television", quantity:15, price:999.99}
添加到 Item
table,我们如何在 FDV 中做到这一点?
试试这个
@api_view(['POST',])
def post_data(request):
serializer = ItemSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
附带说明一下,您可以使用 DRF 的 Response 对象来返回响应。它会根据您的配置自动转换为 JSON 或 XML。
通过
导入
from rest_framework.response import Response
django-rest-framework 将发布的数据放在request.data
简而言之,您可以从那里检索数据并创建对象:
@api_view(['POST',])
def post_data(request):
item_serializer = ItemSerializer(data=request.data)
if item_serializer.is_valid():
item = item_serializer.save()
我是 django rest 框架 (DRF) 的新手,我需要使用基于函数的视图 (FDV) POST
一些数据。我通过这种方式成功使用了 GET
方法,但不知道如何使用 POST 方法向数据库添加值。
# app/models.py
class Item(models.Model):
name = models.CharField(max_length=50)
quantity = models.IntegerField()
price = models.FloatField()
# app/urls.py
urlpatterns = [
path('', views.get_data_list, name='list'),
path('post_val/', views.post_data, name='post_val'), # need to implement
]
# app/serializers.py
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('id', 'name', 'quantity','price')
# app/views.py
from django.http.response import JsonResponse
from rest_framework.parsers import JSONParser
from .models import Item
from .serializers import ItemSerializer
from rest_framework.decorators import api_view
@api_view(['GET',])
def get_data_list(request):
if request.method == 'GET':
items = Item.objects.all()
items_serializer = ItemSerializer(items, many=True)
return JsonResponse(items_serializer.data, safe=False)
@api_view(['POST',])
def post_data(request):
#TO DO
如果我想使用 POST 方法将像这样的新数据 {name:"Television", quantity:15, price:999.99}
添加到 Item
table,我们如何在 FDV 中做到这一点?
试试这个
@api_view(['POST',])
def post_data(request):
serializer = ItemSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
附带说明一下,您可以使用 DRF 的 Response 对象来返回响应。它会根据您的配置自动转换为 JSON 或 XML。 通过
导入from rest_framework.response import Response
django-rest-framework 将发布的数据放在request.data
简而言之,您可以从那里检索数据并创建对象:
@api_view(['POST',])
def post_data(request):
item_serializer = ItemSerializer(data=request.data)
if item_serializer.is_valid():
item = item_serializer.save()