我们从今天开始回到Python开发技术的正题,毕竟这才是我们吃饭的家伙。
今天我们聊一个我日常开发常用到的一个包名叫Django-filter
,这个包对于我们日常Django开发工作的筛选开发非常方便,只需要配置几行代码就能完成我们复杂的筛选。
我在前面介绍Swagger一文「超好用的API工具-Swagger」的时候提到过它,尤其是对于XXX系统管理页面处理起来简直不要太方便,下面且听我细细道来。
安装配置
这个工具安装很简单通过pip就进行
pip install django-filter
这里要说明下这里安装的最新的django-filter,默认新版本是要求Python3的,如果我们环境是Python2.7的需要安装django-filter 1.1.0版本的,另外这个包依赖djangorestframework框架,下面我简称DRF。
安装完,我们添加进INSTALLED_APPS
ini
复制代码
# settings.py
INSTALLED_APPS = [
...
'rest_framework',
'django_filters',
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
...
),
}
这里把django-filter作为默认的backends,也可以在viewset里面写,见下文。
使用
使用的时候我们需要创建一个FilterSet类来进行过滤筛选,废话不多说,我们看一个代码。
javascript
复制代码
from rest_framework import generics
from django_filters import rest_framework as filters
from myapp import Product
class ProductFilter(filters.FilterSet):
min_price = filters.NumberFilter(field_name="price", lookup_expr='gte')
max_price = filters.NumberFilter(field_name="price", lookup_expr='lte')
class Meta:
model = Product
fields = ['category', 'in_stock', 'min_price', 'max_price']
上面这个代码展示了我们价格范围过滤,实际中我们还可以有更多筛选展示方式,
ini
复制代码
class ProductFilter(django_filters.rest_framework.FilterSet):
class Meta:
model = Product
fields = {
'order_id': ['exact'],
'status': ['in'],
'created_at': ['range'],
'card__company_name': ['contains'],
'card__email': ['exact'],
}
class ProductList(generics.ListAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
filter_backends = (filters.DjangoFilterBackend,) # 这儿我们settings配置了就不需要配置了
# filterset_class = ProductFilter # django-filter 2.1,python3
filter_class = ProductFilter # django-filter 1.1, python2.7
上面我从时间范围选择,精确筛选,包含等几个维度展示了django-filter筛选的情况,满足绝大多数筛选情况了,另外我标注了filterset_class写法是在Django-filter 1.1之后,filter_class写法是在1.1之前版本,这里大家需要注意一下。
效果
从上面的代码大家看到了,我们通过把Django-filter集成到DRF中,关于日常筛选操作非常便捷有效,让我们的后端效率大大提高。自己即可以进行开发调试也能交付完整的接口给前端的同学,让大家对接起来更加开心愉快。
结合我前文说的Swagger,效果图如下。
这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
优快云大礼包:全网最全《全套Python学习资料》免费分享🎁
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
因篇幅有限,仅展示部分资料
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓