借这篇文章简单的总结一下自己近期学习的djangorestframework。
Django是基于MVC的开发模式,但是近几年来更流行的开发模式是前后端分离的。Django REST framework (DRF)是基于Django实现的一个RESTful风格的API框架,能够帮助我们快速开发RESTful风格的API。
这里,我是直接使用公司已存在的系统学习。公司已存在的系统A已经有对应的数据库和表结构了。连接公司测试数据库,通过django反向生成model.py,执行命令python manage.py inspectdb > XXX/model.py
连接数据库 model.py如图所示一、实现简单的API接口
首先,先定义一个序列化,在应用目录下新建一个serializers.py文件,序列化能够将表数据转换为json字典以及json字符串
定义序列化接着,我们使用自定义的序列化器来编写API视图,处理客户端的请求,并给出响应。编写应用下的views.py
views.py更新应用app下的urls.py
app的urls.py最后把app的urls加入到项目URL配置,如下:
这里就简单的完成了查看公司列表的api接口了,大家可以用接口测试工具(jmeter,postman,或者自己写代码测试)进行get和post测试。
二、分页
列表的数据往往很多,如果一次将这些数据都查询出来, 必然加大了服务器内存的负载,降低了系统的运行速度。我们实际工作中会使用分页的形式展示。这里使用了DRF的简单分页器,在settings.py中进行全局配置,如图所示,一页展示5条记录:
setting.py使用默认的分页类进行分页查询,如图:
这里就简单的实现了列表的分页查询,大家可以用接口测试工具测试一下每页是否都返回了对应条数的数据。
三、日志
Django控制台输出的日志是简单的,需要在settings.py中进行日志配置,增加日志目录BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
接着在views.py中调用:
四、认证(Authentication)与权限(Permission)
如果不进行认证和权限配置,那么任何人都可以进行GET和POST操作,是不安全的。在全局setting.py加上认证和权限的配置:
这时测试一下api,由于加了认证和权限,就不能在访问了:
为了能够访问接口,这里简单记录一下我的解决方案:
首先,在APP中增加rest_framework.authtoken,如图:
第二,执行命令python manage.py migrate同步数据库表,auth_user表是django框架生成的用户表,接下来就使用这个表来保存用户的信息;authtoken_token表是和用户登录认证相关的数据表,用来存放用户token。
第三,我们创建一个用户,用于后期的登录测试,执行命令:python manage.py createsuperuser,创建成功后auth_user表就有了刚刚创建的数据。
接下来,我们来实现这个登录接口,编写views.py:
配置urls.py:
大家自行用接口测试工具提交post请求到登录接口,我这边就使用了DRF自带的界面操作:
按照接口定义返回了token因为是首次登录,所以会为该用户创建token,即authtoken_token会产生一条记录:
到这里就完成了登录认证,大家可以用接口测试工具测试,如果请求头中不包含该token,那么无法获取到数据:
headers中不包含token如果请求头中包含token,请求头的格式:"Authorization":"Token XXXXXXXXXXXXXXXXXXXXXXXX"
headers中包含token
网友评论