在将 django 配置为使用过滤后端后,我无法让可浏览的 API 显示“过滤器”按钮。
根据documentation我需要做的就是将以下几行代码添加到站点的 settings.py 文件中,过滤器应该会自动出现在可浏览 API 的网络界面中,但我在那里看不到它。我尝试重新启动网络服务器(我正在使用 ./manage runserver)但没有帮助。
编辑:
我知道还有另一种选项可以根据 View 打开过滤器,但我想为所有 View 启用它们。
根据 documentation , 只做其中一个应该就足够了:
The default filter backends may be set globally, using the
DEFAULT_FILTER_BACKENDSsetting.
或以下:
You can also set the filter backends on a per-view, or per-viewset basis
来自 settings.py:
REST_FRAMEWORK = {
<snip>
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
),
pip freeze 的内容如下:
(venv) mba15:server nir$ pip freeze | grep django
django-allauth==0.28.0
django-celery==3.1.17
django-filter==0.15.3
django-registration-redux==1.4
django-rest-auth==0.8.2
djangorestframework==3.5.3
请您参考如下方法:
您是否在 ViewSet 上指定了 filter_fields 或设置了 filter_class?
class ArticleViewSet(ModelViewSet):
serializer_class = ArticleSerializer
queryset = Article.objects.all()
filter_fields = ('category', )
或
class ArticleFilterSet(FilterSet):
class Meta:
model = Article
fields = ('category', )
class ArticleViewSet(ModelViewSet):
serializer_class = ArticleSerializer
queryset = Article.objects.all()
filter_class = ArticleFilterSet
