Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为了在Django Rest框架中使用url中的查询参数进行过滤,我缺少了什么?_Django_Django Rest Framework - Fatal编程技术网

为了在Django Rest框架中使用url中的查询参数进行过滤,我缺少了什么?

为了在Django Rest框架中使用url中的查询参数进行过滤,我缺少了什么?,django,django-rest-framework,Django,Django Rest Framework,我试图对url following中的查询参数实现函数过滤,它在其他环境中工作。 因此,我尝试在其他应用程序中复制此代码。然而,即使我实现了相同的代码,也找不到下面的过滤接口。 有人知道我错过了什么吗? url.py router=routers.SimpleRouter() router.register(r'list',projectViewSet) urlpatterns = [ url(r'^api/', include(router.urls)), ] class pr

我试图对url following中的查询参数实现函数过滤,它在其他环境中工作。
因此,我尝试在其他应用程序中复制此代码。然而,即使我实现了相同的代码,也找不到下面的过滤接口。
有人知道我错过了什么吗?

url.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
视图.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
序列化程序.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
过滤器.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
设置.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
套餐

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
更新
根据Angela的查询,我尝试键入/project/api/list/?user=existing user uuid,但api返回似乎没有如下更改。

我试图在views.py中明确定义过滤器后端,如下所示。然后问题如下图所示解决。仍然不知道为什么在settings.py中指定不起作用。但如果有人有同样的问题,这可能是解决问题的一种方法。
视图.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  
分页.py

router=routers.SimpleRouter()
router.register(r'list',projectViewSet)
urlpatterns = [
    url(r'^api/', include(router.urls)),
]  
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
class projectSerializer(serializers.ModelSerializer):
    area=areaSerializer(read_only=True)
    unmet=unmetSerializer(read_only=True)
    energy = energySer(read_only=True)

    class Meta:
        model = html
        fields = ('pk', 'project', 'version', 'program', 'location', 'certificate', 'user', 'good', 'final','area','unmet','energy','good','final')
class projectAPIfilter(filters.FilterSet):
    user = django_filters.CharFilter(lookup_expr="iexact")
    project = django_filters.CharFilter(lookup_expr="icontains")

    class Meta:
        model=html
        fields=['project','program','location','certificate','user','good','final']
REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': (
        'django_filters.rest_framework.DjangoFilterBackend',
    ),
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 100
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'widget_tweaks',
    'crispy_forms',
    'rest_framework_swagger',
    #'el_pagination',
    'django_tables2',
    'django_filters',
    'heatBalance',
    'project',
    'ecm',
    'help',
    'BEAM',
    'social_django',
    # 'social_django_mongoengine'
]
django=2.0.4=py35_0  
djangorestframework==3.8.2
django-filter==1.1.0 
class projectViewSet(viewsets.ModelViewSet):

    """
    This API returns the list of all projects with basic information to be able to filter
    """
    queryset=html.objects.all()
    serializer_class = projectSerializer
    filter_class=projectAPIfilter
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,)
    pagination_class = projectPagination  
from rest_framework.pagination import PageNumberPagination

class projectPagination(PageNumberPagination):
    page_size = 100  

你能添加DRF、Django、Django过滤器的版本吗?我已经添加了DRF、Django、Django过滤器的版本。此版本有问题吗?为什么仍在使用
DRF 0.1.0
??即使是
DRF==3.7.7
也可用?我已经如上所述更新了djangorestframework==3.8.2。但问题还没有解决。你知道是什么导致了这个问题吗?我试图重现这个问题。但失败了。你能告诉我如何复制它吗?