django框架中,添加用户操作记录和查询功能
2015-07-06 14:58
561 查看
1. Django框架中Request/Response处理流程(铺垫)
django的核心在于中间件middleware,django所有的请求、返回都由中间件来完成。中间件,就是处理HTTP的request和response的,类似插件,比如有Request中间件、view中间件、response中间件、exception中间件等,
Middleware都需要在 “project/settings.py” 中 MIDDLEWARE_CLASSES 的定义。大致的程序流程图如下所示:
首先,Middleware需要在 “project/settings.py” 中 MIDDLEWARE_CLASSES注册, 一个HTTP请求,将被这里指定的中间件从头到尾处理一遍, 暂且称这些需要挨个处理的中间件为处理链,如果链中某个处理器处理后没有返回response,就把请求传递给下一个处理器;如果链中某个处理器返回了response,
直接跳出处理链由response中间件处理后返回给客户端,可以称之为短路处理。
2. 操作事件的记录
如图1所示,我们自定义中间件”RecordEventMiddleWare“,分别在“入口记录”和“出口记录”处对每个请求的ULR进行过滤; 请求的URL在request中对应字段是:
request.META['REQUEST_URI'],web当前登录用户对应字段: request.user ,操作记录中我们呢将其定义为事件的操作者。解析出请求或者请求处理结果后,将其插入数据库,完成记录,查询自然就是读取数据库咯。
2.1 入口记录: def process_view(self, request, view, args, kwargs) :
匹配到我们需要记录的请求的URL后,读取请求的具体内容, 对应字段是:request.body; 它的格式是纯文本字符串,我们约定的参数格式是json串,此处作json串解析(json.loads(request.body)),得到参数字典。然后具体需要记录啥参数,就解析啥参数。
2.2 出口记录: def process_response(self, request, response) :
同样根据request的URL字段进行过滤,我们的response内容也是json格式,类似于request的内容字段,它的内容字段是response.content,同样需要作json串解析: json.loads(response.content)。
我们约定的response包含一个success关键字,标记请求是否成功,另外如果请求处理失败,message关键字对应的给出了失败原因,还有就是可能包括一些必要的返回结果。
相关文章推荐
- Mongo基本命令
- hdu 1533 Going Home
- fonts.googleapis.com加载慢解决办法
- 【Go】为什么用go; Golang Erlang 前世今生
- history对象back()、forward()、go()方法
- Django模块笔记【四】
- 算法基础:整数排序问题(连续整数只保留首尾两个数字)
- EGOCache如何检测缓存时间过期
- [Django]models定义choices 字典中的页面显示值
- 使用 PyCharm 远程调试 Django 程序
- Binary Tree Traversal Algorithms (二叉树遍历算法)
- 《Fisher Kernels on Visual Vocabularies for Image Categorization》学习笔记
- Google文件系统
- Django模块笔记【三】
- Django模块笔记【二】
- 【Go】 格式处理
- pymongo的常用操作
- GooUploader 控件实现上传文件
- algorithm之不变序列操作
- 使用 Google V8 引擎开发可定制的应用程序