Eka*_*Eka 5 django json http-post django-views django-rest-framework
我是 django Rest Framework (DRF) 的新手,我需要POST使用基于函数的视图 (FDV) 的一些数据。我成功地使用了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
Run Code Online (Sandbox Code Playgroud)
如果我想使用 POST 方法将这样的新数据添加{name:"Television", quantity:15, price:999.99}到Item表中,我们如何在 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)
Run Code Online (Sandbox Code Playgroud)
另外,您可以使用 DRF 的 Response 对象来返回响应。它将根据您的配置自动转换为 JSON 或 XML。通过导入它
from rest_framework.response import Response
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10792 次 |
| 最近记录: |