配置 django 使用过滤后端后,我无法让可浏览的 API 显示“过滤器”按钮。
根据documentation我需要做的就是将以下几行代码添加到网站的 settings.py
文件中,过滤器应该自动出现在可浏览 API 的 Web 界面中,但我只是在那里看不到它。我尝试重新启动网络服务器(我正在使用 ./manage runserver
),但这没有帮助。
编辑:
我知道还有另一种选项可以根据 View 打开过滤器,但我希望对所有 View 都启用它们。
根据documentation ,只需执行其中一项就足够了:
The default filter backends may be set globally, using the
DEFAULT_FILTER_BACKENDS
setting.
或以下内容:
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
关于python - Django Rest框架可浏览的API过滤器后端不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499884/