You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF项目能否配置不同根级API URL?路径结构调整咨询

实现目标API路径结构的解决方案

很简单,咱们只需要调整路由配置,把categories的路由直接挂载到/api/层级下,就能得到你想要的/api/users/、/api/products/、/api/categories/路径结构,具体操作分两种方式,你可以根据自己的习惯选择:

方式一:直接在根路由中映射Category视图

这种方式适合Category接口逻辑比较简单的场景,步骤如下:

  1. 确保你已经在products应用中创建了Category的视图类
    先在products/views.py里写好Category的列表创建视图(如果还没写的话):

    from rest_framework import generics
    from .models import Category
    from .serializers import CategorySerializer
    
    class CategoryListCreateAPIView(generics.ListCreateAPIView):
        queryset = Category.objects.all()
        serializer_class = CategorySerializer
    
  2. 修改项目根目录的urls.py
    导入products的视图,然后在api_urls中添加categories的路径:

    from django.contrib import admin
    from django.urls import path, include
    # 导入products应用的视图
    from products import views
    
    api_urls = [
        path('users/', include('users.urls')),
        path('products/', include('products.urls')),
        # 直接添加categories路径,映射到Category的视图
        path('categories/', views.CategoryListCreateAPIView.as_view())
    ]
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include(api_urls))
    ]
    

方式二:模块化拆分Category路由(推荐)

如果后续Category需要扩展更多子接口(比如详情、更新、删除),这种模块化的方式更便于维护:

  1. 创建Category专属的路由文件
    在products应用目录下新建category_urls.py,写入Category的路由:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        # 空路径对应Category的列表创建接口
        path('', views.CategoryListCreateAPIView.as_view())
        # 后续可以在这里添加更多路由,比如:
        # path('<int:pk>/', views.CategoryRetrieveUpdateDestroyAPIView.as_view())
    ]
    
  2. 修改项目根目录的urls.py
    在api_urls中引入这个新的路由文件:

    from django.contrib import admin
    from django.urls import path, include
    
    api_urls = [
        path('users/', include('users.urls')),
        path('products/', include('products.urls')),
        # 引入products应用下的category_urls
        path('categories/', include('products.category_urls'))
    ]
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include(api_urls))
    ]
    

验证效果

完成以上配置后,你的API路径就完全符合需求了:

  • /api/users/:对应users应用的接口
  • /api/products/:对应Product的列表创建接口
  • /api/categories/:对应Category的列表创建接口

内容的提问来源于stack exchange,提问作者Aamir Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:40:41