- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Django框架中间件(Middleware)用法实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例讲述了Django框架中间件(Middleware)用法。分享给大家供大家参考,具体如下:
1、面向切面编程 。
2、Django中的中间件 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
from
django.http
import
HttpResponse
from
django.shortcuts
import
render, redirect
from
django.urls
import
reverse
from
django.utils.deprecation
import
MiddlewareMixin
from
MidUpVcode.settings
import
BLACK_LIST, VIP_LIST
'''
所有的钩子函数都可以返回一个Response
一旦钩子函数返回了Response,整个请求的受理就结束了
'''
# 继承于框架中间件
class
MyappMiddleware(MiddlewareMixin):
# 中间件的初始化方法,全局执行一次
# def __init__(self, get_response=None):
# super(MyappMiddleware, self).__init__()
# print(">>>>>>>>>> MyappMiddlware __init__")
# 下钩子于所有路由被交给路由表之前
def
process_request(
self
, request):
# 获取客户端IP地址
clientIp
=
request.META[
'REMOTE_ADDR'
]
# 请求的路由
url
=
request.path
print
(
">>> process_request"
, request, clientIp, url)
# # 屏蔽黑名单用户
# 只要客户端IP在黑名单中
# if clientIp in BLACK_LIST:
# 直接渲染fuckoff.html并立刻返回
# return render(request,'fuckoff.html')
# # 当VIP用户访问福利页面时提供更多好的服务
# if clientIp in VIP_LIST and url=='/myapp/fuli/':
# return render(request, 'fuli.html', context={'imgpath': 'meinv1.jpg'})
# 福利页必须登录了才能查看
if
url
=
=
'/myapp/fuli/'
and
not
request.session.get(
'uname'
,
None
):
return
redirect(reverse(
'myapp:login'
))
# 下钩子于所有路由请求被交给视图函数之前
def
process_view(
self
, request, view_func, view_args, view_kwargs):
print
(
">>> process_view"
, request, view_func, view_args, view_kwargs)
# 理论上下钩子于所有路由请求的模板被渲染完成以后
# 这个函数实测无法回调
def
process_template_response(
self
, request, response):
print
(
">>>>>>>>>> process_template_response"
, request, response)
return
response
# 下钩子于所有路由的响应被返回之前
def
process_response(
self
, request, response):
print
(
">>>>>>>>>> process_response"
, request, response)
return
response
def
process_exception(
self
, request, exception):
print
(
">>>>>>>>>> process_exception"
, request, exception)
return
redirect(
'/'
)
|
3、自定义中间件 。
。
1
2
3
|
class
LearnAOP(MiddlewareMixin):
def
process_request(
self
,request):
print
(
'request的路径'
,request.GET.path)
|
1
2
3
4
5
6
|
MIDDLEWARE
=
[
...
# 注册自定义的中间件
'middleware.MyMiddleware.MyappMiddleware'
,
...
]
|
希望本文所述对大家基于Django框架的Python程序设计有所帮助.
原文链接:https://blog.csdn.net/lm_is_dc/article/details/80527298 。
最后此篇关于Django框架中间件(Middleware)用法实例分析的文章就讲到这里了,如果你想了解更多关于Django框架中间件(Middleware)用法实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试安装 webpymail ( https://code.google.com/p/webpymail/wiki/Installation ),我按照教程中的说明进行了所有操作,但是在启动该应
我已经创建了一个应该针对每个 请求运行的中间件,因此我将其添加到 Http\Kernel 的 $middleware 属性中。我还在这个中间件中使用了 Auth::check() ,所以我的中间件应该
我正在将使用 django_cms 的应用程序从一台服务器(一切正常)移动到另一台服务器,并在过去 4 小时内试图找出导致此错误的原因。非常欢迎提出建议! mod_wsgi (pid=21972):
示例代码可在 https://github.com/baumgarb/reverse-proxy-demo 上获得README.md 解释了如果您克隆存储库,如何重新产生问题。 我有一个 API 网关
长话短说,我有一个相当奇怪的路由场景,我需要在调用参数中间件之前调用中间件: router.param('foo', function (req, res, next, param) { // G
我在本地开发环境中没有这个问题,但我只是使用 nginx + gunicorn 部署了应用程序(第一次部署应用程序),每当我尝试发出请求时都会收到此回溯。 2012-01-21 22:24:36 [5
我在安装了 python 2.6.2 的 Ubuntu 9 上运行 Apache2。当我尝试访问 django 应用程序上的页面时出现以下错误: File "/usr/local/lib/python
我是 django 和 python 的新手,我试图在一段 django 代码上运行服务器,但我遇到了以下问题, Kinnovates-MacBook-Pro:platformsite Kinnova
我想澄清 config.ru 文件以指定 Rack 中间件,而不是使用 config.middleware 数组。 如果 config.ru 通常如下所示: require ::File.expand
我目前正在尝试用基于 express + webpack-middleware 的更强大的解决方案替换我使用 webpack-dev-server 的旧设置。所以我曾经像这样运行它:“webpack-
我开始使用带有 node/express 环境的 webpack 开发一个带有 react- 的 ReactJS 服务器端渲染应用程序路由器。我对每个 webpack 包在开发和生产(运行时)环境中的
我想为Guzzle写一个中间件它将特定的键添加到 form_params 并用值填充它。在我读过的文档中how to modify the headers但尚未找到有关 $request 对象其他属性
我目前正在研究各种中间件解决方案,这些解决方案将使我能够使用多种语言创建能够相互通信的应用程序。 ZeroC产品套件似乎是理想的选择,因为它提供了一种语言不可知的方式来定义数据和对数据进行操作的服务(
本文主要针对Golang的内置库 net/http 做了简单的扩展,通过添加中间件的形式实现了管道(Pipeline)模式,这样的好处是各模块之间是低耦合的,符合单一职责原则,可以很灵活的通过中间件
我有一个包含 url 的表单输入,我需要验证给定的 URL 没有被第 3 方 API 列入黑名单,我不确定是否需要使用 Middleware或创建特定表格 Request并在将该请求传递给命令之前验证
它说 The Slim Framework implements a version of the Rack protocol. As a result, a Slim application can
我想编写自己的中间件来检查当前用户是否是某个组的成员。如果是,用户可以移动到路由,如果不是,用户将被重定向到不同的页面。 我的中间件正在工作,但我不知道如何获取当前用户 ID。我试过 Auth::us
本文实例讲述了Django框架中间件(Middleware)用法。分享给大家供大家参考,具体如下: 1、面向切面编程 切点(钩子) 切点允许我们动态的在原有逻辑中插入一部分代码
我想做这样的事情: $app->mount('dashboard', new Travel\Controllers\Dashboard())->before(function() use ($app)
我正在尝试在我的reactjs应用程序中应用redux。由于这些错误,我无法继续: 我确信我已经安装了我需要的所有依赖项。这是我的 package.json 的相关部分 "dependencies":
我是一名优秀的程序员,十分优秀!