DRF项目能否配置不同根级API URL?路径结构调整咨询
实现目标API路径结构的解决方案
很简单,咱们只需要调整路由配置,把categories的路由直接挂载到/api/层级下,就能得到你想要的/api/users/、/api/products/、/api/categories/路径结构,具体操作分两种方式,你可以根据自己的习惯选择:
方式一:直接在根路由中映射Category视图
这种方式适合Category接口逻辑比较简单的场景,步骤如下:
确保你已经在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修改项目根目录的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需要扩展更多子接口(比如详情、更新、删除),这种模块化的方式更便于维护:
创建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()) ]修改项目根目录的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
相关产品推荐
相关产品推荐

