在Django Rest Framework中将数据作为数组发布 [英] Post data as an array in Django Rest Framework
问题描述
我正在使用Django Rest框架实现API。我想知道Python是否可以像Ruby一样以数组形式发送POST参数?
I'm implementing an API using Django Rest framework. I wonder Python can send POST params as an array like Ruby does?
例如:
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]
推荐答案
在 django-rest-framework
中有多种方法可以解决此问题,具体取决于您实际要执行的操作。
There are a number of ways to deal with this in django-rest-framework
, depending on what you are actually trying to do.
如果您打算通过 POST
数据传递此数据,则应使用序列化器
。使用序列化程序和 django-rest-framework
的 Serializer
,您可以提供 POST
数据通过 json
或通过表单
。
If you are planning on passing this data through POST
data then you should use a Serializer
. Using a serializer and django-rest-framework
s Serializer
you can provide the POST
data through json
or through a form
.
Serializer
文档: http://www.django-rest-framework.org/api-guide/serializers/
Serializer字段
文档: http://www.django-rest-framework.org/api-guide/fields/
具体地说,您将要查看 ListField
。
Specifically you will want to look at the ListField
.
未经测试,但是您需要以下类似的东西:
It's not tested, but you will want something along the lines of:
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 ...
这篇关于在Django Rest Framework中将数据作为数组发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!