drf_day06

本文介绍了Django REST Framework(DRF)中的路由自动化,包括SimpleRouter和DefaultRouter的使用,强调了在不使用action装饰器时视图类的要求。接着详细讲述了登录接口的编写过程,涉及models.py、views.py、urls.py和serializer.py的实现。最后,讨论了认证机制,如何编写认证类以及全局和局部使用认证的方法。
摘要由CSDN通过智能技术生成

1. 路由

1.1 自动生成路由

0 自动生成路由的写法
-1 导入:from rest_framework.routers import SimpleRouter, DefaultRouter
-2 实例化:router = SimpleRouter()
-3注册:router.register('user',views.UserView,'user')
-4 加入到urlpatterns中(两种方式)
	-urlpatterns+=router.urls
    -path('', include(router.urls)),
1 自动生成的路由映射关系其实定死了()
/books/--->get--->list
/books/--->post--->create
/books/1--->get--->retrieve
...
2 以后写的视图类不需要写action装饰器的话,视图类中必须要有
-list,destroy,retrieve,create,update方法之一
-其实是必须是 5个视图扩展类之一+GenericAPIView   9个视图子类,ModelViewSet
3 SimpleRouter和DefaultRouter
-DefaultRouter比SimpleRouter多一个根路径,显示所有注册过的路由

1.2 action装饰器的使用

在视图函数中,会有一些其它名字的方法,必须要使用action装饰器做映射
# methods:支持的请求方式,列表
# detail:默认是False 控制生成的路由是 /user/login/ 还是 /user/pk/login 是不是带pk
# url_path: 控制生成的/user/后的路径是什么,如果不写,默认以方法名命名 /user/login/,一般跟函数名同名即可
# url_name:别名,用于反向解析

@action(methods=[‘GET’,‘POST’], detail=True, url_path=‘login’)
def login(self, request,pk):
这样写了以后可以:自动生成路由

2 登录接口编写

models.py

用户表

class User(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    def __str__(self):
        return self.username

用户登录记录表
如何区分用户是否登录了

class UserToken(models.Model):
    # SET_NULL   SET_DEFAULT   CASCADE  SET(函数内存地址)
    user = models.OneToOneField(to='User', on_delete=models.CASCADE)
    token = models.CharField(max_length=32, null=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值