django源码分析-middleware模块分析


首先,我们要理解一下什么是django中间件,也就是middleware,django中间件是在请求和响应之间的一个 拦截器。如果,你有Java编程经验,例如:spring框架中的Aspect编程,和它是一个道理,只不过叫法不一样。当我们创建好一个django项目时,你会看到settings.py配置文件中会有这样一段配置:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

有几个中间件就来自这里,例如:安全中间件SecurityMiddlewareCommonMiddlewareCsrfViewMiddleware等。

下面我们来看看这个模块下面的具体内容:

  • init.py : 模块初始化文件。
  • cache.py :缓存中间件,如果你想启用缓存功能,在settings.py配置文件中做如下配置:
MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    ...
    'django.middleware.cache.FetchFromCacheMiddleware'
]
  • clickjacking.py : 这个中间件是防止你的django站点被其他网站使用iframe嵌入到它们的网站。
  • common.py :这个是django的基本功能中间件,例如:禁止访问用户代理。
  • csrf.py :django防止跨站请求中间件。
  • gzip.py :django实现页面内容压缩中间件。
  • http.py :django处理http请求中间件。
  • locale.py :django实现国际化中间件。
  • security.py :django实现安全功能中间件。

更多Django教程

学习更多Django教程