在 Django Rest Framework 中将数据作为数组发布

Hoa*_*ang 2 django django-rest-framework

我正在使用 Django Rest 框架实现 API。我想知道 Python 可以像 Ruby 一样将 POST 参数作为数组发送吗?

例如:

POST /api/end_point/
params = { 'user_id': [1,2,3] }

# In controller, we get an array of user_id:
user_ids = params[:user_id] # [1,2,3]
Run Code Online (Sandbox Code Playgroud)

小智 5

有多种方法可以解决此问题django-rest-framework,具体取决于您实际尝试执行的操作。

如果您打算通过POST数据传递这些数据,那么您应该使用Serializer. 使用序列化程序和django-rest-frameworks,Serializer您可以POST通过json或通过form.

Serializer文档:http Serializer Field : //www.django-rest-framework.org/api-guide/serializers/文档:http : //www.django-rest-framework.org/api-guide/fields/

具体来说,您将要查看ListField.

它没有经过测试,但你会想要一些类似的东西:

from rest_framework import serializers
from rest_framework.decorators import api_view

class ItemSerializer(serializers.Serializer):
    """Your Custom Serializer"""
    # Gets a list of Integers
    user_ids = serializers.ListField(child=serializers.IntegerField())

@api_view(['POST'])
def item_list(request):
    item_serializer = ItemSerializer(data=request.data)
    item_serializer.is_valid(raise_exception=True)
    user_ids = item_serializer.data['user_ids']
    # etc ...
Run Code Online (Sandbox Code Playgroud)