ContentType ContentType其实django自带的,但是平时的话很少会用到,所以还是放在Djangorestframework这个部分 作用: 在实际的开发中,由于数据库量级大,所以数据库表也很多,外键关联也很多,比如下面这个例子,一个电商平台的数据库表: 除非是专项的电商平台,比如只卖手机那种,像那种类别太多的这样每有一个类别的数据库表,就要在优惠券表里做以下外键约束,假如有几十几百张数据库表呢?这就很不符合我们的开发规范了,所以可以自定义一个[中间表] 这其中什么关系呢?图…
在文章前后端分离djangorestframework——视图组件 中,见识了DRF的视图组件强大,其实里面那个url也是可以自动生成的,就是这么屌 DefaultRouter urls文件作如下调整 访问 注意我访问的url地址: 查看单条数据: 修改: 删除: 但是一般情况下不用这个,因为这样会暴露出所有的url,可能会有被恶意攻击的可能性 所以为了安全,原则上不会这么做,除非是很多,而且这些自动生成的url我们都有用到 且注意,标注区域,一定不能写成 r'$',不然会匹配出错…
CBV与FBV CBV之前说过就是在view.py里写视图类,在序列化时用过,FBV就是常用的视图函数,两者的功能都可以实现功能,但是在restful规范方面的话,CBV更方便,FBV还要用request.method来判断是get,put,post等的,在CBV里要用什么就定义什么方法,根据请求的方法自动进入对应的CBV的方法里,节省了判断请求类型的过程 View与APIView APIView就是在View上做了二次封装,多了一些功能而已,View是django自带的视图组件 在 前后端分离…
Pagination 为什么要分页也不用多说了,大家都懂,DRF也自带了分页组件 这次用  前后端分离djangorestframework——序列化与反序列化数据  文章里用到的数据,数据库用的mysql,因为django自带的sqlite对于日期类型的数据会自动转成时间戳,导致数据再序列化时无法正常序列化成日期类型而出错 分页组件还是跟前面的认证组件,权限组件,频率组件很类似的 PageNumberPagination 在根目录创建一个utils文件夹,在该文件夹里创建一个paginatio…
authentication 认证是干嘛的已经不需要多说.而前后端未分离的认证基本是用cookie或者session,前后端分离的一般用token 全局认证 先创建一个django项目,项目名为drfversion,app名为DRF,设置简单的数据库表,并迁移: model: view: url: 启动项目,访问测试,先创建一个用户root,密码123: 写入一个认证类,读源码可知,自定义的认证类必须要定义这个方法: 在项目根目录创建一个utils文件夹,创建auth文件,定义一个认证类,必须继…
权限permissions 权限验证必须要在认证之后验证 权限组件也不用多说,读了源码你就很清楚了,跟认证组件很类似 具体的源码就不展示,自己去读吧,都在这里: 局部权限 设置model表,其中的type就是用户类型 数据库: 在根目录创建utils,utils创建permission文件,在其中定义权限类,自定义的权限类必须继承BasePermission类,且必须定义has_permission方法,其中message是权限验证没通过时显示的字段 url: view: 开始访问,刚才说了权限…
加密视频 在以后的开发项目中,很可能有做在线视频的,而在线视频就有个问题,因为在线播放,就很有可能视频数据被抓包,如果这个在线视频平台有付费视频的话,这样就会有人做点倒卖视频的生意了,针对这个问题,目前国内有很多不错的加密视频平台,可以把你平台的视频放在他们那里,然后通过他们的机制进行加密,然后做一套机制,当用户使用平台播放时,其实是平台去加密视频方请求过来的加密视频,这样就可以保证视频的安全性了 常用加密视频平台 鄙人听说的,有保利威,金盾,还有很多很多我叫不上名,搜索引擎一搜就有一大堆的,本…
关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码 这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的用的是token,而不是session,所以对于目前来说就不适用了,所以需要根据具体业务逻辑来改动.当然,大佬可以直接忽略 djangorestframework+redis+jquery 好的,直接上例子: 还是用的 Python高级应用(3)—— 为你的项目添加验证码 这文章最后的LoginAu…
我们写好后端的代码,要把数据交给前端的展示的,这个数据以什么类型给前端呢?学到这里,我们已经知道这个数据最好是json字符串才行,因为网络间的传输,只认字符串或者二进制,字符串就是我们的数据,二进制就是流媒体,比如图片,视频,音频之类的 但是我们在后端经过逻辑处理得到的数据并不一定一开始就是个json字符串,所以就需要序列化下 补充: 序列化:将其他类型的数据转为字符串 反序列化:将字符串转回之前的数据类型(通常是字典类型) 在Python中,可用于序列化与反序列化的就是json和pickle模…
restful现在非常流行,所以很有必要提一下 web服务交互 在浏览器中能看到的每个网站,都是一个web服务.那么我们在提供每个web服务的时候,都需要前后端交互,前后端交互就一定有一些实现方案,我们通常叫web服务交互方案. 目前主流的三种web服务交互方案: REST ( Representational State Transfer)表述性状态转移 SOAP (Simple Object Access Protocol) 简单的对象访问协议 XML-RPC (XML Remote Pro…