一种比drf更好的基本滤波方法
drf-lafv的Python项目详细描述
概述
一种比drf更适合做一些基本滤波器的方法
要求
- Python(2.7,3.2,3.3,3.4,3.5-加上django 1.8-)
- Django(1.7,1.8)
- django rest框架(3.0、3.1、3.2)
安装
使用pip…
安装$ pip install drf-lafv
示例
假设您有以下型号.py
fromdjango.dbimportmodelsclassAuthor(models.Model):name=models.CharField(max_length=250)nickname=models.CharField(max_length=100)classBook(models.Model):title=models.CharField(max_length=200)description=models.TextField()publication_date=models.DateField()isbn=models.CharField(max_length=17)author=models.ForeignKey(Author)
你想根据作者的昵称isbn过滤你的书单,然后创建 一个自定义筛选器,它允许您获取发布时间小于 30天前。好吧,DRF本身,请您安装django过滤器并编写 一堆可能很难的东西。使用lafv您可以完成此操作:
fromlafv.viewsimportListAPIFilteredViewfromserializersimportBookSerializerclassBookView(ListAPIFilteredView):queryset=Book.objects.all()serializer_class=BookSerializerfilter_fields=('author__nickname','isbn')custom_filters=('new',)deffilter_new(self,queryset):""" get books that publication date is no longer than 1 month """last_month=datetime.today()-timedelta(days=30)queryset=queryset.filter(publication_date__gte=last_month)returnqueryset
就这样!,请检查测试应用程序中的示例
测试
安装测试要求。
$ pip install -r requirements.txt
使用运行测试运行
$ ./runtests.py
您还可以使用优秀的tox测试工具来运行测试 针对所有受支持的python和django版本。安装tox 全局,然后简单地运行:
$ tox
文件
要构建文档,您需要安装mkdocs。
$ pip install mkdocs
要预览文档:
$ mkdocs serve Running at: http://127.0.0.1:8000/
要生成文档:
$ mkdocs build