Django 中间件
django中间件
中间件需要使用request参数的META属性
获取用户ip地址
- 如下所示
1
request.META['REMOTE_ADDR']
自定义中间件类对访问的ip进行限制,从而对特定ip进行封号处理
创建一个全新的中间件文件
创建一个新的中间件问价
middleware.py
```python
from django.http import HttpResponseclass BlockedIPSMiddleware(object):
EXCLUDE = ['192.168.1.238','127.0.0.1'] def process_view(self,request,view_func,*view_args,**view_keargs): user_ip = request.META['REMOTE_ADDR'] if user_ip in BlockedIPSMiddleware.EXCLUDE: return HttpResponse("拒绝访问")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 注意,2.0以后无法使用以上的方法进行中间价创建
- ```python
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
class BlockedIPSMiddleware(MiddlewareMixin):
EXCLUDE = ['192.168.1.238','127.0.0.1']
def process_view(self,request,view_func,*view_args,**view_keargs):
user_ip = request.META['REMOTE_ADDR']
if user_ip in BlockedIPSMiddleware.EXCLUDE:
return HttpResponse("拒绝访问")
创建好之后,再setting文件中进行中间件注册
- setting.py文件中
- MIDDLEWARE = [要注册的中间件函数路径]
- 该路径需要精确到中间件函数类
运行django项目,可以看到,被记录的函数已经无法正常访问这个项目了
中间件覆盖了项目所属所有的页面
process_exception