Django REST框架JSON数组发布 [英] Django REST framework JSON array post

查看:85
本文介绍了Django REST框架JSON数组发布的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Django 1.8和Django rest_framework 3.3.1。
我可以保存一个JSON数组,它可以工作。
但是我想保存多个JSON数组。



我找到了请求的解决方案,ㅠ



如何保存此JSON数组?



测试JSON数组:



< pre class = lang-js prettyprint-override> {
urllist:[
{
title: 20151123100000011,
Publisher: 01100101,
link: 01100101.20151123100000011
},
{
title: 20151123100000076,
publisher: 01100101,
链接: 01100101.20151123100000076
}
]
}

型号:

  class NewsUrl (models.Model):
链接= models.CharField(max_length = 100,primary_key = True)
title = models.TextField(default ='')
Publisher = models.CharField(max_length = 150,空白= True,默认='')
状态=模型.CharField(max_length = 1,默认='R')#R:就绪,W:工作,D:完成
创建=模型.DateTimeField(auto_now_add = True)
更新=模型。 DateTimeField(auto_now = True)

def __str __(self):
return NewsUrlList = [%s]%s%(self.link,self.title)

类元:
顺序=(创建的,)

查看:

  class NewsUrlList(mixins.ListModelMixin,mixins.CreateModelMixin,泛型。 GenericAPIView):
queryset = NewsUrl.objects.all()
serializer_class = NewsUrlSerializer
Permission_classes =(IsAuthenticated,)
authentication_classes =(JSONWebTokenAuthentication,)

def get(self,request,* args,** kwargs):
return self.list(request,* args,** kwargs)

def post(self,request,* args,** kwargs):
return self.create(request,* args,* * kwargs)

序列化器:

  class NewsUrlSerializer(serializers.Serializer):
链接= serializers.CharField(required = True,max_length = 100)
标题= serializers.CharField(必需= False,最大长度= 200)
发布者= serializers.CharField(必需= False,最大长度= 10)
status = serializers.CharField(必需= False,默认= 'R')

def create(self,validated_data):
return NewsUrl.objects.create(** validated_data)

def update(self,instance, validated_data):
instance.status = validated_data.get('status',instance.status)
instance.save()
返回实例


解决方案

如果要创建几个新项目,应自己实例化序列化程序并添加参数 many = True


I'm using Django 1.8 and Django rest_framework 3.3.1. I can save a single JSON array and it works. But I want to save multiple JSON arrays.

I have found a solution for the request, ㅠ

How can I save this JSON array?

Test JSON array:

{
    "urllist": [
        {
          "title": "20151123100000011",
          "publisher": "01100101",
          "link": "01100101.20151123100000011"
        },
        {
          "title": "20151123100000076",
          "publisher": "01100101",
          "link": "01100101.20151123100000076"
        }
      ]
}

Model:

class NewsUrl(models.Model):
    link = models.CharField(max_length=100, primary_key=True)
    title = models.TextField(default='')
    publisher = models.CharField(max_length=150, blank=True, default='')
    status = models.CharField(max_length=1, default='R')  # R:Ready, W:Working, D:Done
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return "NewsUrlList = [%s] %s" % (self.link, self.title)

    class Meta:
        ordering = ('created', )

View:

class NewsUrlList(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
    queryset = NewsUrl.objects.all()
    serializer_class = NewsUrlSerializer
    permission_classes = (IsAuthenticated, )
    authentication_classes = (JSONWebTokenAuthentication, )

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

Serializer:

class NewsUrlSerializer(serializers.Serializer):
     link = serializers.CharField(required=True, max_length=100)
     title = serializers.CharField(required=False, max_length=200)
     publisher = serializers.CharField(required=False, max_length=10)
     status = serializers.CharField(required=False, default='R')

     def create(self, validated_data):
         return NewsUrl.objects.create(**validated_data)

     def update(self, instance, validated_data):
         instance.status = validated_data.get('status', instance.status)
         instance.save()
         return instance

解决方案

If you want to create several new items you should instantiate the serializer by yourself and add the argument many=True

这篇关于Django REST框架JSON数组发布的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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