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
...
#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
...