在Django Rest Framework中将数据作为数组发布 [英] Post data as an array in Django Rest Framework

查看:182
本文介绍了在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-frameworks 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆