首页 > 解决方案 > Django Rest 框架过滤器的问题

问题描述

我是 django rest 的新手,我正在尝试为我的应用程序构建过滤器。查看文档https://github.com/philipn/django-rest-framework-filters我遵循了所有实现步骤,但是当我尝试按用户名过滤搜索时,没有任何效果

设置.py

    INSTALLED_APPS = [
    'general',
    'suprimentos',
    'corsheaders',
    'django.contrib.auth',
    'django.contrib.admin',
    'django.contrib.messages',
    'django.contrib.sessions',
    'django.contrib.staticfiles',
    'django.contrib.contenttypes',
    'simple_history',
    'django_filters',
    'rest_framework_filters',
    'django_dbconn_retry',
    'rest_framework'
]

    REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ),   
    'DEFAULT_FILTER_BACKENDS': (
        'rest_framework_filters.backends.RestFrameworkFilterBackend',
    )
}

视图.py

import django_filters.rest_framework
from rest_framework import viewsets
from rest_framework import filters
import rest_framework_filters as filters
from rest_framework_filters import backends

class UsernameFilter(filters.FilterSet):
    username = filters.AllLookupsFilter(name='username')

class TrackUserView(viewsets.ModelViewSet):
    model = TrackUser
    queryset = TrackUser.objects.all()
    serializer_class = TrackUserSerializer
    filter_backends = [backends.RestFrameworkFilterBackend]
    filter_class = UsernameFilter

    def get(self, request):
    
        track = UserLoginActivity.objects.all()
        serializer = UserLoginActivitySerializer(track, many=True)
        data = serializer.data
        return Response({'result':data})

    def post(self, request):
        url = request.data['page']
        ip_client = request.META.get('HTTP_IP_CLIENT')
        if ip_client:
            ip = ip_client.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
        username = request.user.username
        user_agent_info = request.META.get('HTTP_USER_AGENT', '<unknown>')[:255]
        hour = datetime.datetime.now()

        model = TrackUser.objects.create(url=url, ip=ip, username=username, user_agent_info=user_agent_info, datetime=hour)

        return Response(status=status.HTTP_200_OK)

网址.py

path('trackuser/',TrackPagesView.as_view({'get':'get','post':'post'}), name='trackuser')

我不知道是否缺少某些东西,或者我在某处放错了东西,但我找不到导致它的错误或语法问题。

标签: python-3.xdjangodjango-rest-frameworkfiltering

解决方案


推荐阅读