有时,在访问接口时,需要的是符合一定条件的数据。此时可以通过过滤来实现,Django Rest framework中,可以使用 django-fitlter 来实现过滤功能。在使用该功能前,需要提前安装和注册 django-filter。
在终端输入以下内容完成 django-filter 的安装:
pip install django-filter
在配置文件中配置以下内容:
INSTALLED_APPS = [
...
'django_filters', # 注册应用
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}
在视图中添加 filter_fields 属性,指定可以过滤的字段:
class StudentViewSet(ModelViewSet):
queryset = StudentsModel.objects.all()
serializer_class = StudentsSerializer
filter_fields = ('s_age')
此时,可以通过访问 http://127.0.0.1:8000/api/students/?s_age=11 来获取所有年龄为 11 的学生信息。
通过限流可以限制用户访问接口的频率,起到防止用户恶意访问的作用,过滤功能则是对数据的进一步处理,筛选出符合用户需求的数据或者按照用户的需求,实现返回诸如按一定顺序排列的数据等。