django - 如何在 django 中间件中添加字段以请求正文
问题描述
我想在中间件的请求正文中添加新字段并在视图中使用它。
我用谷歌搜索了它,但结果没有用。
我该怎么做?
Django v2 python 3.6
解决方案
您需要添加一个单独的自定义中间件,该中间件将在登陆到特定视图之前处理请求。下面是自定义中间件的代码:
class ProcessRequestMiddleware(MiddlewareMixin):
"""
This middleware appends new payload in request body
"""
def process_view(self, request, view_func, *view_args, **view_kwargs):
request_data = getattr(request, '_body', request.body)
request_data = json.loads(request_data)
# here you can write the logic to append the payload to request data
request._body = json.dumps(request_data)
return None
注意 - 中间件被放置在一个应用程序 common (common/middleware/custommiddleware.py) 中
现在将此中间件添加到 settings.MIDDLEWARE 列表中:
"common.middleware.custommiddleware.ProcessRequestMiddleware"
现在您可以通过调用json.loads(request.body)
.
推荐阅读
- python - 如何在 SQLAlchemy 中加入表并获取组合信息
- python - 列出熊猫数据框中每组的唯一值计数
- python - 包含变量计数的 Python 任务问题
- c++ - C++ dll堆内存分配问题
- javascript - document.getElementById 为 null - 自动点击器
- javascript - node.js 中 setInterval 的替代方法,用于启动某些功能
- java - 想要在 BootStrap url 中输入主机名:9092(我的主机文件窗口中有针对实际 url 的主机名条目)JAVA
- swift - 快速响应令牌类型
- reactjs - React 没有返回更新的状态
- android - 没有使用迪拜时区从日历实例中获取迪拜当前时间