python - Django Rest框架可浏览的API过滤器后端不显示

标签 python django django-rest-framework django-filter

配置 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/

相关文章:

Python:单独的进程记录到同一个文件?

django - 在 Django 中监控 celery 任务

django - 如何验证模型的两个(外键)相关字段的共同唯一性?

python - 在字典列表中附加缺失值

python - 如何装饰父类并让子类使用它? Python

django - Django 的身份验证应用程序

python - 在 Django 中加载具有多对一关系的夹具

Django Rest 框架 : POST to Viewset with URL parameter

django Rest框架通过POST创建嵌套对象 "Models"

python - 神经网络的人工生命