django相关面试题
1. auto_add与auto_add_now
作用于时间类型的字段,auto_add_now只在创建数据的时候生效,auto_now在修改数据的时候生效 create_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True) 注意这两个属性只有在使用django的orm的create和save方法时生效,update时不行的,需要自己手动添加这个字段值的更新
2. 关于rest framework
1. 路由:使用router进行注册。framework里面有个routers包 router = routers.DefaultRouter() 2. 权限,继承BasePermission类,写一个has_permission方法,返回true和false
3. 访问频率限制,这个一般用不到
4. 序列化。用于字段的校验,查数据查哪些字段等等,继承Serializer或者ModelSerializer(也是继承了Serializer)
5. pageNumberPagination类
https://www.cnblogs.com/zwq-/p/10269169.html
是REST framework提供的所有视图类的基类,继承自Django的
https://blog.csdn.net/m0_61810345/article/details/136181103
1. APIViewView
父类。
它新增了authentication_classes,permissoin_classes, throttle_classes
2. GenericAPIView
serializer_class
get_serializer_class(self) 通过判断使用不同的序列化类
queryset
get_queryset(self) 返回queryset
get_object(self) 返回一个记录对象
3. 5个视图拓展类(也叫混入类), 配合GenericsAPIView使用
ListModelMixin 列表视图,def list 方法实现
CreateModelMixin 创建,create方法
Retrieve
Update
Destroy
4. 视图集ViewSet,路由需要添加{'get': 'list'}
5. GenericViewSet 与5个视图类配合使用
6. ModelViewSet 最全
3. 跨域问题
corheadrs包,做配置
PageNumberPagination