继续上篇关于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,才能成功。
分享到:
相关推荐
**Python-Django中间件与Kibana集成** 在Python Web开发领域,Django是一个非常流行的开源框架,它提供了丰富的功能来构建高效、可扩展的Web应用。Django中间件(Middleware)是Django框架中的一个重要组件,它允许...
Django:Django中间件与请求响应流程.docx
一、什么是Django中间件 Django 中间件是用来处理Django的请求request和响应response的框架级别的钩子,它是一个轻量,低级别的插件系统,用于全局范围内改变Django的输入,输出。每个中间件组件都负责做一些特定...
首先,我们需要理解Django中间件的工作机制。中间件是一系列处理请求和响应的轻量级对象,它们在Django的视图函数执行前后被调用。通过在中间件中添加代码,我们可以在请求处理流程的早期阶段插入预加载头,这样当...
### Django中间件基础用法详解 #### 前言 Django框架因其强大的功能和高度的灵活性,在Web开发领域有着广泛的应用。中间件是Django框架中的一个重要概念,它允许开发者在请求到达视图之前或者响应离开视图之后执行...
Django中间件是Django框架中的一个重要组成部分,它允许开发者在请求处理的生命周期中插入自定义的行为。中间件提供了一种灵活的方式,可以在请求到达视图函数之前或响应返回给客户端之前进行操作,例如日志记录、...
总之,Django中间件提供了一种灵活的方式,使得开发者可以在请求和响应的生命周期中添加自定义逻辑,同时全局异常处理也得以实现,确保了应用程序的健壮性。正确地使用和设计中间件对于提升Django应用的功能性和可...
一个Django中间件,用以生成网站上可预见的错误
这是一个简单的Django中间件,用于将所有http请求记录到django应用程序中。 它记录请求数据,响应,HTTP方法和请求IP。 目前,该模型仅以PostgreSQL作为数据库运行。 要求 Python(3.4、3.5、3.6) Django(1.11,...
Django中间件 在http请求 到达视图函数之前 和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。 中间件的执行流程 1、执行完所有的request方法 到达视图函数。 2、执行中间件的其他...
接下来将详细探讨Django中间件的执行顺序、定义方法、执行流程以及如何注册和配置。 首先,中间件的定义方法主要包括创建一个工厂函数,该函数接收一个可调用的get_response对象,并返回一个可调用的中间件实例。...
本项目重写了原本的jwt认证模块,可以使用自己的模型来当做jwt内部的用户模型使用,使用这个之后会是的jwt认证变得更加简单有效。作为后端api、移动端的...并且本项目使用了django中间件来做日志输入,错误定向等等。
本文将详细解释如何使用Django中间件来拦截未登录用户访问特定URL的实例。 首先,我们来看一下如何通过装饰器在视图层实现拦截。Django提供了一个内置的装饰器`@login_required`,可以在视图函数前添加此装饰器,以...
2.Django中间件 这个是我的项目的目录结构。 首先,先在app目录(也就是我项目的web目录)中新建一个文件命名为middleware.py 里面加入以下代码: try: from django.utils.deprecation import MiddlewareMixin # ...
标题"django-user-language-middleware:Django中间件,可在用户模型中使用语言进行翻译"表明这是一个针对Django框架的中间件,它的主要功能是根据用户的语言偏好进行内容的本地化翻译。这通常涉及到多语言网站的...
Django全局必需登录中间件(django-glrm)是Django中间件,它使所有视图和URL均需登录。 在Django中,大多数站点页面都是受保护的,除了少数公共页面(例如登录页面等),这是很常见的。 用@login_required装饰...
Django 允许 CIDR 一个 Django 中间件,用于在 ALLOWED_HOSTS 中启用 CIDR IP 范围。快速开始安装 Django 允许 CIDR: pip install django-allow-cidr将中间件添加到您的 MIDDLEWARE_CLASSES(对于 Django < 1.10...