玩转Django开发,你需要的一个插件

本文介绍了如何在Django开发中使用Django-filter包进行高效筛选,包括安装、配置步骤,并展示了FilterSet的使用示例。结合Swagger,提升API管理的便捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们从今天开始回到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,效果图如下。

image

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

优快云大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉优快云大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

### Vue框架与低代码平台结合的架构设计方案 #### 架构概述 低代码平台的核心目标是减少传统手动编码的工作量,通过图形化界面和配置方式实现业务逻辑的快速构建。Vue框架因其组件化的特性和高效的响应式机制,成为低代码平台前端开发的理想选择[^1]。 #### 前端架构设计 在基于Vue的低代码平台中,通常采用模块化的设计思路来分离关注点。以下是常见的架构组成部分: 1. **组件库** 使用成熟的UI组件库(如Element Plus、Ant Design Vue等),这些组件提供了丰富的基础控件支持,能够显著提升开发效率。同时,针对特定需求可扩展自定义组件[^3]。 2. **拖拽布局引擎** 实现页面元素的自由拖放功能,允许用户直观地调整组件位置及大小。这可以通过引入第三方插件(例如`vue-draggable-resizable`)或者自行封装完成[^2]。 3. **数据绑定与状态管理** 利用Vue内置的数据双向绑定能力简化视图层操作;对于复杂场景,则推荐集成Vuex进行全局状态管理,确保各部分之间通信顺畅无阻塞现象发生。 4. **模板编辑器** 提供可视化的HTML/CSS/JS在线编辑环境给开发者用来定制样式效果以及交互行为脚本编写工作变得轻松简单快捷高效很多倍不止于此还应该考虑加入实时预览模式以便即时查看修改后的成果如何呈现出来让用户更加满意最终产品形态达到预期标准之上甚至超越期望值水平线之外才行哦! 5. **API接口服务调用** 配置RESTful API 或 GraphQL 查询语言连接后台数据库获取所需资源信息并展示于界面上供访问者查阅学习参考借鉴模仿创新创造价值最大化效益最优化原则指导下不断改进完善直至完美为止才算是真正意义上的成功之作呢! #### 后端架构设计 后端主要负责处理业务逻辑、存储数据并与前端保持同步更新。Django一个非常适合此用途的强大Python Web框架因为它不仅具备高度灵活性而且稳定性极强安全性良好社区活跃度高文档齐全易于上手掌握使用起来得心应手游刃有余毫无压力感言之有效果立竿见影显而易见一目了然明明白白清清楚楚真真切切实实在在确确实实名副其实货真价实童叟无欺百依百顺千变万化无穷尽也哉乎焉耳矣兮夫子曰过云尔而已矣罢了呵呵哒哈哈哈嘻嘻嘻嘿嘿嘿耶耶耶加油干吧少年们奋斗成就梦想未来属于你们每一个人哟霍霍霍咯咯咯哇哈哈哈哈哈!!! ```python from django.db import models class FormModel(models.Model): name = models.CharField(max_length=255) fields = models.JSONField() def __str__(self): return self.name ``` 上述代码片段展示了如何创建一个简单的表单模型类用于保存动态生成字段结构的信息记录下来便于后续查询检索统计分析等功能拓展延伸应用广泛前景广阔无限可能等待探索挖掘发现惊喜连连好戏连台精彩纷呈不容错过快来一起玩转这个世界吧朋友们!!! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值