django框架中,添加用户操作记录和查询功能

本文介绍了Django框架的核心——中间件,它负责处理HTTP的request和response,类似于插件,包括Request、View、Response和Exception中间件等。中间件在settings.py中的MIDDLEWARE_CLASSES注册,请求会被中间件处理链依次处理,若无响应则传递,有响应则由response中间件处理后返回给客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Django框架中Request/Response处理流程(铺垫)

    django的核心在于中间件middleware,django所有的请求、返回都由中间件来完成。

    中间件,就是处理HTTP的request和response的,类似插件,比如有Request中间件、view中间件、response中间件、exception中间件等,

    Middleware都需要在 “project/settings.py” 中 MIDDLEWARE_CLASSES 的定义。大致的程序流程图如下所示:


 图1. django 请求处理流程图


    首先,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关键字对应的给出了失败原因,还有就是可能包括一些必要的 返回结果。
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值