路由组件
Routers
对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系,还可以使用Routers类来快速实现路由的创建
- SimpleRouter(常用)
- DefaultRouter(用的少)
# 方式一
# 1.导入Routers类
from rest_framework.routers import DefaultRouter
# 2.实例化对象
router = DefaultRouter()
# 3.将视图集注册到路由器中: 第一个参数是url前缀,第二个是视图类 ,第三个是别名
router.register('user', UserView, 'user')
# 4.将路由添加到路由列表中
urlpatterns += router.urls
# 方式二
# 前三步骤一样
# 1.导入include函数
from django.urls import include
# 2.在 Django 项目的 URL 配置中使用 include() 函数: 这样可以多一层路由
urlpatterns = [
path('', include(router.urls)) # 将路由器生成的 URL 配置包含到根路径下
]
试图类中派生的方法,自动生成路由(action)#
class Login(ViewSetMixin, APIView):
authentication_classes = []
permission_classes = []
@action(methods=['POST'], detail=False) # 自己扩展的方法(派生)
def login(self, request, *args, **kwargs):
username = request.data.get('username')
password = request.data.get('password')
user_alive = models.User.objects.filter(username=username, password=password).first()
if user_alive:
token = uuid.uuid4()
models.User_token.objects.update_or_create(defaults={'token':token}, user=user_alive)
return Response({'code':100, 'msg':'登录成功', 'token':token}, headers={'token':token})
else:
return Response({'code':101, 'msg':'登录失败'})
# 这样自动生成的路由是(books/login/) (如果prefix参数传空字符串,则是/login/)
'''
参数解释:
method: 用来指定请求方式,默认GET
detail: 用来指定是否传入pk值(如:查所有或查单条),False:不传pk,True:传pk
url_path: 用来指定url的路径,默认方法名
url_name: 用来指定url的别名
'''
'''
注意:
1 如果继承了APIView,那么想要自动创建路由,则必须写action动作并在urls.py中传basename参数来指定视图
2 必须继承ViewSetMixin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!