Python Django REST framework 常用技巧
2018-02-24 21:47
861 查看
条件过滤
常用过滤
实例
接口使用
多级列表
get查找 默认非ID
不用版本 不同api
浏览次数
过滤当前用户
多参数使用
__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
常用过滤
实例
接口使用
多级列表
get查找 默认非ID
不用版本 不同api
浏览次数
过滤当前用户
多参数使用
条件过滤
常用过滤
_exact 精确等于 like ‘aaa’__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
实例
class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): """ 商品列表页 """ # 过滤大于 100 的价格才返回 queryset = Goods.objects.all().filter(shop_price__gt=100) serializer_class = GoodsSerializer pagination_class = Pagination
接口使用
多级列表
三级列表,默认 ModelSerializer 并不能满足需求class CategorySerializer3(serializers.ModelSerializer): class Meta: model = GoodsCategory fields = "__all__" class CategorySerializer2(serializers.ModelSerializer): sub_cat = CategorySerializer3(many=True) class Meta: model = GoodsCategory fields = "__all__" class CategorySerializer(serializers.ModelSerializer): sub_cat = CategorySerializer2(many=True) class Meta: model = GoodsCategory fields = "__all__"
get查找 默认非ID
class UpdatesTinkerViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ Tinker 热更新列表 """ queryset = UpdateTinker.objects.all() serializer_class = UpdatesSerializer # 如不指定,默认以 id 为标准 lookup_field = "tinkerId"
不用版本 不同api
http://www.django-rest-framework.org/api-guide/versioning/#varying-behavior-based-on-the-versiondef get_serializer_class(self): if self.request.version == 'v1': return AccountSerializerVersion1 return AccountSerializer
浏览次数
class GoodsListViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet): # get 方法时,调用一次 点击次数 + 1 def retrieve(self, request, *args, **kwargs): instance = self.get_object() instance.click_num += 1 instance.save() serializer = self.get_serializer(instance) return Response(serializer.data)
过滤当前用户
只显示当前用户的列表def get_queryset(self): return UpdateTinker.objects.filter(user=self.request.user)
多参数使用
class UpdatesTinkerFilter(FilterSet): """ 商品的过滤filter """ applicationId = filters.CharFilter(name="applicationId", lookup_expr='iexact') version = filters.CharFilter(name="version", lookup_expr='iexact') class Meta: model = UpdateTinker fields = ['applicationId', 'version'] class UpdatesTinkerViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): """ Tinker 热更新列表 """ queryset = UpdateTinker.objects.all() serializer_class = UpdatesSerializer pagination_class = UpdatesTinkerPagination filter_backends = (DjangoFilterBackend,) search_fields = ('applicationId', 'version') # 查找过滤class filter_class = UpdatesTinkerFilter # 默认搜索 tinkerId lookup_field = "tinkerId"
相关文章推荐
- Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)【转】
- Python爬虫:一些常用的爬虫技巧总结
- python之常用语法技巧
- python 常用技巧 1.设置pip国内源 2.打开服务器上的图像界面3.创建linux命令的快捷方式4.中文编码
- Django REST framework的各种技巧——6.异常处理
- 收藏整理的一些Python常用方法和技巧
- Python基础 之 列表常用方法及技巧
- python常用web框架性能测试(django,flask,bottle,tornado)
- 全面剖析Python的Django框架中的项目部署技巧第1/2页
- python之常用语法技巧
- Django中admin注册的方法以及一些常用使用技巧
- Python爬虫学习之常用技巧详解
- 一些常用的Python爬虫技巧汇总
- [Python]常用技巧之CSV处理
- python-django-----mac终端常用命令
- python学习笔记-常用技巧整理
- Python 常用技巧
- python django rest framework 快速入门
- python 常用技巧
- Python SQLAlchemy基本操作和常用技巧