使用DRF / django-filter进行过滤操作
首先
我使用Django REST Framework创建了一个Web API。在这篇文章中,我使用了django-filter来根据请求进行过滤并返回响应。我参考了Django REST Framework的Filtering页面。环境如下:
-
- OS: Windows 10 Pro (WSL2 Ubuntu-20.04)
-
- Python: 3.8.5
-
- Django: 3.2
-
- djangorestframework: 3.12.4
- django-filter: 2.4.0
安装和设置
用以下的命令进行安装。
$ pip install django-filter
另外,在项目的 settings.py 中添加 ‘django_filters’ 和 ‘DEFAULT_FILTER_BACKENDS’。
# Application definition
INSTALLED_APPS = [
...
'rest_framework',
'django_filters',
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend'],
}
现在可以加载并使用DRF了。
过滤
在ViewSets.py中,要指定要过滤的字段,请将其指定为filterset_fields。在这里,我们指定了在Django REST Framework中处理API创建时的名为Info的模型的id字段。
from .models import Info
from .serializers import InfoSerializer
from rest_framework import viewsets
class InfoViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Info.objects.all()
serializer_class = InfoSerializer
filterset_fields = ['id']
确认行动
应该已经完成了过滤设置,为了进行功能确认,请在开发服务器上使用 python manage.py runserver 命令启动开发服务器。访问 http://localhost:8000/api/info/?id=1111111,并指定id,将返回过滤结果。另外,访问 http://localhost:8000/api/info ,API控制台右上方将添加一个”过滤”选项,也可以手动查看过滤结果。
最后
可以使用django-filter来进行筛选。接下来,尝试通过用React开发的前端调用API来获取适当的数据。