Django 无法找到用于查询参数的视图,其他视图工作正常

Django is unable to find the view used for query params the other views are working perfectly

#urls.py

from django.urls import include,path
from rest_framework import routers
from . import views

router=routers.DefaultRouter()
router.register(r'banks',views.BanksViewSet)
router.register(r'branches',views.BranchesViewSet)
router.register(r'branches/autocomplete/',views.BranchAutocompleteViewSet, basename='branches')

urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

#views.py

from django.shortcuts import render
from rest_framework import viewsets
from .serializers import BanksSerializer,BranchesSerializer
from .models import Banks,Branches

class BanksViewSet(viewsets.ModelViewSet):
    queryset=Banks.objects.all().order_by('id')
    serializer_class= BanksSerializer

class BranchesViewSet(viewsets.ModelViewSet):
    queryset=Branches.objects.all().order_by('ifsc')
    serializer_class=BranchesSerializer

class BranchAutocompleteViewSet(viewsets.ModelViewSet):
    serializer_class=BranchesSerializer
    def get_queryset(self):
        branchName=self.request.query_params.get("q")
        limit=self.request.query_params.get("limit")    
        offset=self.request.query_params.get("offset")
        queryset=Branches.objects.filter(branch__startswith=branchName).order_by('ifsc')[offset:limit]
        return queryset

BanksViewSet 和 BranchesViewSet 工作正常,但另一个不工作 问题可能出在 urls.py 中的基本名称,因为即使保留为空字符串,更改它也不会做任何事情。

这是控制台的内容: Django 版本 3.1.5,使用设置 'bankApi.settings' 在 http://127.0.0.1:8000/ 启动开发服务器 使用 CTRL-BREAK 退出服务器。 未找到:/branches/autocomplete/ [19/Jan/2021 18:30:04] "GET /branches/autocomplete/?q=A&limit=5&offset=0 HTTP/1.1" 404 12148

确保你的根 url branches 像这样注册 last:

...
router.register(r'banks',views.BanksViewSet)
router.register(r'branches/autocomplete/',views.BranchAutocompleteViewSet, basename='branches')
router.register(r'branches',views.BranchesViewSet) # root of 'branches' is last
...