django restframework

news/2024/11/12 10:43:53

1.POST请求免于csrf认证

    from django.views.decorators.csrf  import csrf_exempt

    @csrf_exempt
    写入被修饰的函数

2.POST请求仅要求此函数要通过csrf认证

    from django.views.decorators.csrf  import csrf_protect
    @csrf_protect

仅限 FBV模式

3.jango序列化

      import json
      from django.core import serializers
      from django.http import JsonResponse
      
      goods = Goods.objects.all()
      json_data = serializers.serialize('json', goods)
      json_data = json.loads(json_data)
      return JsonResponse(json_data, safe=False)
      返回序列化后的结果

4.使用序列化实现创建对象
serializers.py

       class GoodsSerializer(serializers.Serializer):
           name = serializers.CharField(required=True, max_length=100)
           click_num = serializers.IntegerField(default=0)

           post方法创建新对象    同时也有 update 函数
           def create(self, validated_data):
               return Goods.objects.create(**validated_data)

views.py

     class GoodsListViews(APIView):

         实现查看操作
         def get(self, request, format=None):
             goods = Goods.objects.all()[:10]
             goods_serializer = GoodsSerializer(goods, many=True)
             return Response(goods_serializer.data)
             
         实现添加操作
         def post(self, request, format=None):
             serializer = GoodsSerializer(data=request.data)
             if serializer.is_valid():
                 serializer.save()
                 return Response(serializer.data, status=status.HTTP_201_CREATED)
             return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

5.简化查询

      class GoodsSerializer(serializers.ModelSerializer):
          class Meta:
              model = Goods
              field = ('name', 'add_time')  
              要返回的字段
              
              field = '__all__'    
              全部字段

6.分页显示 (url指向 GoodsListViews.as_view())
views.py

       class GoodsPagination(PageNumberPagination):

           page_size = 10
           page_size_query_param = 'page_size'
           page_query_param = "p"
           max_page_size = 100


       class GoodsListViews(generics.ListAPIView):

           queryset = Goods.objects.all()
           serializer_class = GoodsSerializer
           pagination_class = GoodsPagination

serializers.py

      class CategorySerializer(serializers.ModelSerializer):
          class Meta:
              model = GoodsCategory
              fields = '__all__'


      class GoodsSerializer(serializers.ModelSerializer):
          category = CategorySerializer()

          class Meta:
              model = Goods
              field = '__all__'    

6.对象逆序排列

                  class  Post(models.Model):
                      pass
                      class Meta:
                          ordering=['-id']
                          # 根据 id 逆排序

http://www.niftyadmin.cn/n/1710838.html

相关文章

演练VC中的COMMON一族(一)

http://bd7451321.spaces.live.com/blog/cns!B0D5189A8E5CA565!465.entry 声明:由于在CSDN论坛看到不少VC新手问及VC控件的使用。本人手头正好有一份以前下载到的一份资料,讲述的比较详细。所以发出来和大家 共享。但由于时间久远,已不及得下…

用VC++6.0编程实现汉字拼音查找

摘要 使用VC6.0编程查找汉字的拼音 关键字 汉字,拼音,资源 下载:http://www.cppblog.com/Files/edog/LookPY.rar 一、 引言 在读书看报或者浏览网上文章时候,经常会看到一些比较生僻的汉字而不知道其读音…

ios 图片加载内存尺寸_ios 对于超高分辨率(图片本身不大)的图片加载导致内存暴增的处理方法...

0f0a1d08e3a1b1e156dfc95ff62e32070.jpg上面的图片是一个分辨率很高的图片图片本身只有1M左右但是分辨率很大。5472*3648,如果连续九张加载到UIImageView的时候导致内存暴增甚至会导致app因为memory的问题闪退。如果直接使用SDwebImage加载的话,你会发现…

一些经典题型----数据结构与算法

1.找到链表倒数第k个节点 假设一共链表长度为 x, 倒数第k个节点就是正数第 x-k1个节点 所以,方法 在起点设置两个指针a,b当 a 走到第 k-1个节点时,b 开始走当 a 走完整个链表时,b 所处位置就是倒数第k个节点位置a&…

默认是什么_男左女右是什么意思 为什么我们会默认男左女右?

在我们的生活中,对于男女的位置似乎有一个大家都默认的规矩,那就是男左女右。这个默认的约定存在于生活的方方面面,比如,一般的公厕就是男左女右;男女照一些正式的合照,比如结婚照,就是男左女右;还有一些情…

在Visual Basic 6.0中MSFlexGrid控件与DataGrid控件有什么不同?

都是数据绑定控件,但是也有一定的区别,适合不同的应用场合: MSFlexGrid 控件: Microsoft FlexGrid (MSFlexGrid) 控件可以显示网格数据,也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能,网格中可…

python 数据类型要点

1.dict 对于字典来说 它的底层是由 hash表实现的 大数据写成字典模式再遍历,会减小复杂度,优化算法 因为 字典遍历复杂度为O(1),列表为O(n)另 字典要求其 key值必须是不可变数据类型,如元组,整形,字符串型列表就不行再…

分布式运用——rsync远程同步

分布式运用——rsync远程同步 一、rsync的背景和原理1.rsync的功能2.rsync的应用场景3.使用rsync的基本命令4.scp与rsync的区别 二、配置rsync源服务器1.关闭防火墙2.建立/etc/rsyncd.conf 配置文件3.保证所有用户对源目录/var/www/html 都有读取权限4.启动 rsync 服务程序5.关…