前言
django的中间件可以在视图函数执行前执行,比如登陆验证、日志记录等,下面简单说明一下中间件的基础用法,主要为笔者学习时的笔记
1. 在django项目文件夹下创建一个用于存放中间件函数的文件夹
文件夹的名字可自定义,本文使用utils作为文件夹名
2. 在utils文件夹中创建中间件py文件
如用于登陆验证的中间件loginCheck.py
from django.http import HttpResponseRedirect from django.utils.deprecation import MiddlewareMixin class UserLoginCheck(MiddlewareMixin): ''' 登录验证中间件 ''' def process_request(self, request): # 用户request请求前 path = ['/login/', '/logout/'] # 不需要进行登录检测的url if request.path in path: return userinfoSession = request.session.get('userinfo') if not userinfoSession: return HttpResponseRedirect('/login/') return
3. 配置使用中间件
在setting.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', 'utils.loginCheck.UserLoginCheck', # 此处为自定义的中间件 ]
扩展
中间件可定义的五种方法
Request预处理函数: process_request(self, request)
View预处理函数: process_view(self, request, callback, callback_args,callback_kwargs)
Template模版渲染函数:process_template_response()
默认不执行,只有在视图函数的返回结果对象中有render方法才会执行,并把对象的render方法的返回值返回给用户(注意不返回视图函数的return的结果了,而是返回视图函数 return值(对象)中rende方法的结果)
Exception后处理函数:process_exception(self, request, exception)
Response后处理函数:process_response(self, request, response)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
主要内容:Django的历史,Django的设计理念,Django的优势Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计。Django可以更容易地快速构建更好的Web应用程序,并且它使用更少的代码。 注意 − Django是Django 软件基金会的一个注册商标,并在BSD许可证授权。 Django的历史 2003 − 开始时,由Adrian Holovaty和Simon Willison 将其作为劳伦斯杂志 - 世界
本文向大家介绍详解vue组件基础,包括了详解vue组件基础的使用技巧和注意事项,需要的朋友参考一下 什么是组件 组件(Component)是对数据和方法的简单封装。web中的组件其实可以看成是页面的一个组成部分,它是一个具有独立的逻辑和功能的界面,同时又能根据规定的接口规则进行相互融和,最终成为一个完整的应用,页面就是由一个个类似这样的组成部分组成的,比如导航、列表、弹窗、下拉菜单等。页面只不过是
本文向大家介绍详解Mysql基础语法的使用,包括了详解Mysql基础语法的使用的使用技巧和注意事项,需要的朋友参考一下 MYSQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Managem
本文向大家介绍IOS Swift基础之switch用法详解,包括了IOS Swift基础之switch用法详解的使用技巧和注意事项,需要的朋友参考一下 IOS Swift基础之switch用法详解 概述 Swift中的switch语句与Java等语言中的switch有很大的相似点,但是也有不同的地方,并且更加灵活。 Swift中switch的case语句中不需要添加break Swift中需
本文向大家介绍Android基础之startActivityForResult()的用法详解,包括了Android基础之startActivityForResult()的用法详解的使用技巧和注意事项,需要的朋友参考一下 前言 安卓开发中一个很基础的操作就是打开一个 Activity ,另一个很必要的操作就是,打开一个 Activity ,在打开的 Activity 中操作之后并获得返回结果。 两个
本文向大家介绍Django基础知识 URL路由系统详解,包括了Django基础知识 URL路由系统详解的使用技巧和注意事项,需要的朋友参考一下 MVC和MTV框架 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面