继续上篇关于Django的日志,探索Django的其他方面。
首先想到的是Django里面有没有类似filter的组件。遗憾的是,并未发现Django中有类似过滤器或者拦截器的概念。然而,Django提供了功能或许更为强大(至少是不弱于)这些概念的新东西:middleware。
设想这样的需求:在用户未登录之前,他访问任何页面,都将转入登录页面,要求其登录。这样的判断最适合放在页面逻辑的前端,而不是在页面逻辑中实现。
我们写这样的一个middleware,它拦截所有访问非login页面的请求,检测其cookie,并判断将请求转向login页面或者其请求的页面。
middleware代码如下:
'''
Created on 2009-4-9
@author: Administrator
'''
from django.http import HttpResponseRedirect
from django.contrib.auth import SESSION_KEY
from urllib import quote
class QtsAuthenticationMiddleware(object):
def process_request(self, request):
#print request.path
if request.path != '/login/':
if "favorite_color1" in request.COOKIES:
pass
else:
return HttpResponseRedirect("http://lqqm.net")
在settings.py中配置此middleware:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'middleware.QtsAuthenticationMiddleware',
)
当用户第一次请求musician_list,会转向两全其美。
只有用户访问过login,设置了cookie,再访问musician_list,才能成功。
分享到:
相关推荐
一、什么是Django中间件 Django 中间件是用来处理Django的请求request和响应response的框架级别的钩子,它是一个轻量,低级别的插件系统,用于全局范围内改变Django的输入,输出。每个中间件组件都负责做一些特定...
Django中间件能够可视化应用程序的流量在Kibana中
一个Django中间件,用以生成网站上可预见的错误
这是一个简单的Django中间件,用于将所有http请求记录到django应用程序中。 它记录请求数据,响应,HTTP方法和请求IP。 目前,该模型仅以PostgreSQL作为数据库运行。 要求 Python(3.4、3.5、3.6) Django(1.11,...
Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他...
主要介绍了Python Django中间件,中间件函数,全局异常处理操作,结合实例形式分析了Django中间件,中间件函数,全局异常处理相关操作技巧,需要的朋友可以参考下
⚡️Django中间件在视图运行之前自动发送预加载头,从而实现更快的HTTP2服务器推送(CSP支持)
主要介绍了Django中间件基础用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了Django中间件工作流程及写法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
本项目重写了原本的jwt认证模块,可以使用自己的模型来当做jwt内部的用户模型使用,使用这个之后会是的jwt认证变得更加简单有效。作为后端api、移动端的...并且本项目使用了django中间件来做日志输入,错误定向等等。
Django 中间件 Django 中间件是修改 Django request 或者 response 对象的钩子,可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。 浏览器从请求到响应的过程中,Django 需要通过很多中间件...
主要介绍了详解Django中间件执行顺序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
2.Django中间件 这个是我的项目的目录结构。 首先,先在app目录(也就是我项目的web目录)中新建一个文件命名为middleware.py 里面加入以下代码: try: from django.utils.deprecation import MiddlewareMixin # ...
==中间件是一个用来处理Django的请求和响应的框架级别的钩子==。它是一个轻量、低级别的插件系统,用于在==全局范围内==改变Django的输入和输出。每个中间件组件负责做一些特定的功能。 由于其影响的是全局,所以...
Django全局必需登录中间件(django-glrm)是Django中间件,它使所有视图和URL均需登录。 在Django中,大多数站点页面都是受保护的,除了少数公共页面(例如登录页面等),这是很常见的。 用@login_required装饰...
django-custom-logging 用于自定义格式日志记录的Django中间件 :warning: 当前仅支持预发行版本。安装安装套件python -m pip install django-custom-logging 在设置文件中向MIDDLEWARE添加足够的中间件MIDDLEWARE = ...
Django 允许 CIDR 一个 Django 中间件,用于在 ALLOWED_HOSTS 中启用 CIDR IP 范围。快速开始安装 Django 允许 CIDR: pip install django-allow-cidr将中间件添加到您的 MIDDLEWARE_CLASSES(对于 Django < 1.10...
在本篇文章里小编给各位整理了关于Django中间件拦截未登录url的实例内容以及相关知识点,有需要的朋友们可以学习下。