如何结合Django URLpatterns与DRF路由并设置app_name='scrumboard'
排查DRF路由配置问题的几个关键点
嘿,看你贴的代码还没写完(CardVi...应该是CardViewSet吧?),不过先从现有内容帮你梳理几个大概率会踩的坑:
先补全拼写错误:你代码里的
CardVi...明显是没写完的类名,先把它补成CardViewSet,确保导入和注册的类名完全匹配,拼写错误是最常见的低级问题。确认路由的层级配置:
首先,你的scrumboard/urls.py最后需要把router生成的路由加入到urlpatterns里,补全后的完整代码参考如下:# scrumboard/urls.py from rest_framework.routers import DefaultRouter from .api import ListViewSet, CardViewSet from django.urls import path, include router = DefaultRouter() router.register(r'lists', ListViewSet) router.register(r'cards', CardViewSet) urlpatterns = [ path('', include(router.urls)), # 如果有其他自定义视图的路径,也可以加在这里 ]另外,别忘了在项目根目录的urls.py里把scrumboard的路由包含进去,比如:
# project/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('scrumboard.urls')), # 这一行必须添加 ]检查视图集的基础配置:确保你的
ListViewSet和CardViewSet正确继承了DRF的视图集类,并且配置了必要的queryset和serializer_class,示例代码如下:# scrumboard/api.py from rest_framework import viewsets from .models import List, Card from .serializers import ListSerializer, CardSerializer class ListViewSet(viewsets.ModelViewSet): queryset = List.objects.all() serializer_class = ListSerializer class CardViewSet(viewsets.ModelViewSet): queryset = Card.objects.all() serializer_class = CardSerializer验证路由是否生效:启动Django服务后,访问
http://localhost:8000/api/lists/和http://localhost:8000/api/cards/,如果还是有问题,把具体的报错信息(比如404/500错误提示、终端里的异常栈)贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者khashashin
相关产品推荐
相关产品推荐

