杭州 建设网站制作wordpress 二维码插件下载

张小明 2026/3/12 13:44:40
杭州 建设网站制作,wordpress 二维码插件下载,阿里云对象存储做静态网站,免费名字设计logo网站1、概述 AOP(Aspect Oriented Programming)#xff0c;面向切面编程#xff0c;是对业务逻辑的各个部分进行隔离#xff0c;从而使得业务逻辑各部分之间的耦合度降低#xff0c;提高程序的可重用性#xff0c;同时提高了开发的效率。可以实现在不修改源代码的情况下给程序…1、概述AOP(Aspect Oriented Programming)面向切面编程是对业务逻辑的各个部分进行隔离从而使得业务逻辑各部分之间的耦合度降低提高程序的可重用性同时提高了开发的效率。可以实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。面向切面编程就是将交叉业务逻辑封装成切面利用AOP的功能将切面织入到主业务逻辑中。所谓交叉业务逻辑是指通用的与主业务逻辑无关的代码如安全检查事物日志等。若不使用AOP则会出现代码纠缠即交叉业务逻辑与主业务逻辑混合在一起。这样会使业务逻辑变得混杂不清。举个例子:银行系统取款会有一个流程查询也会有一个流程。Django的中间件就是应用AOP技术来实现的它是diango请求/响应处理的钩子框架是一个轻巧的低级“插件“系统在不修改diango项目原有代码的基础上可以全局改变diango的输入或输出每个中间件组件负责执行某些特定功能。PS:因为中间件改变的是全局所以需要谨慎实用滥用的话会影响到服务器的性能2、django默认中间件diango项目默认有一些自带的中间件如下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, ]3、自定义中间件说明如果需要增加白定义的中间件(该中间件类必须继承MiddlewareMixin django.utils.deprecation)一般是添加在系统的中间件之下如: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, # 自定义中间件 my_app.middleware.MyMiddleware ]中间件中主要有以下方法(一个中间件类最少需要实现下列方法中的一个):① process_request:处理请求对象请求到达diango框架时第一时间调用多个中间件之间顺序调用参数:request返回:response:调用当前中间件的process_response处理None:调用下一个中间件的process_request处理② process_response:处理响应对象视图函数返回response后调用多个中间件之间倒序调用参数:request,response返回:response:调用上一个中间件的process_response处理③ process_view:视图预处理在视图函数处理之前调用即请求在urlconf当中匹配到对应的视图函数之后先不调用视图函数而是先调用此方法多个中间件之间顺序调用参数:request,view func,view_args,view_kwargsview _func: yrl路由匹配到的视图函数不是字符串是函数对象view_args:视图函数的可变参数view_kwargs:视图函数的可变关键字参数返回:response:调用最后一个中间件的process_response开始处理。None:调用下一个中间件的process_view处理④ process_exception:在视图函数处理过程抛出异常时调用中间件的方法(除了process_template_response)中抛出异常不会触发多个中间件之间倒序调用参数:requestexceptionexception:是处理过程中抛出的异常对象返回:response:之后的process exception都不会触发而是直接调用最后一个中间件的process response处理None:调用上一个中间件的process exception处理⑤ process_template_response:默认不执行在视图函数完成操作后调用除非视图函数返回的response中有render方法多个中间件之间倒序调用参数:requestresponseresponse:不是HttpReponse而是具有render方法的对象譬如:SimpleTemplateResponse对象在(django.template.response中)返回:response:具有render方法的对象继续调用上一个中间件的processtemplate response处理最后一个process_template_response处理完成后会自动调用response对象中的render方法得到一个HttpResponse对象进行返回再调用processresponse操作中间件方法的执行时有顺序的process_request与process_view是按照顺序去执行的而process_response、process_exception和process_template_response是反序的总结:用户请求process requesturlconf路由匹配找到对应的视图函数process _view 视图函数 process_template_response(如果视图函数返回的response有render方法否则这一步不会执行)process response返回respanse到用户其中在视图函数和 process_template_response 处理过程中如果出现 exception那么就会倒序执行中间件的process_exception4、常见自定义中间件功能总之你如果有对全局request或response的操作需求那么就可以使用中间件譬如:1.IP过滤:对一些特定IP地址返回特定响应2.URL过滤:如果用户访问的是login视图则通过;如果访问其他视图需要检测是不是有session已经有了就通过没有就返回login页面。这样就不用在多个视图函数上写装饰器login_required3.内容压缩:response内容实现gzip的压缩返回压缩后的内容给前端4.CDN:内容分发网络实现缓存如果缓存中有数据直接返回没有找到缓存再去请求视图5.URL过滤:某个子应用升级暂停使用某个特定的path路径下的请求返回一个特定页面5、示例项目1.新建django项目:middleware_study子应用:middleware app2.urls增加路由配置from django.contrib import admin from django.urls import path from middleware_app import views urlpatterns [ path(middleware_test/, views.middleware_test), ]3. views中实现函数:from django.http import HttpResponse from django.shortcuts import render from django.template.response import SimpleTemplateResponse class MyTemplateResponse(): def render(self): return HttpResponse(MyTemplateResponse) # Create your views here. def middleware_test(request): print(中间件测试) # raise Exception(异常) # return HttpResponse(中间件测试成功) # return SimpleTemplateResponse(middleware_app/index.html) return MyTemplateResponse()4.增加index.html模板!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body pSimpleTemplateResponse 测试/p /body /html5. 建立middlewaretest.pyfrom django.http import HttpResponse from django.utils.deprecation import MiddlewareMixin class FirstMyMiddleware(MiddlewareMixin): def process_request(self,request): print(FirstMyMiddleware process_request) def process_response(self,request,response): print(FirstMyMiddleware process_response) return response def process_view(self,request,view_func,view_args,view_kwargs): print(FirstMyMiddleware process_view) def process_exception(self,request,exception): print(FirstMyMiddleware process_exception) def process_template_response(self,request,response): print(FirstMyMiddleware process_template_response) return response class SecondMyMiddleware(MiddlewareMixin): def process_request(self,request): print(SecondMyMiddleware process_request) # return HttpResponse(SecondMyMiddleware process_request) def process_response(self,request,response): print(SecondMyMiddleware process_response) return response def process_view(self,request,view_func,view_args,view_kwargs): print(SecondMyMiddleware process_view) # return HttpResponse(SecondMyMiddleware process_view) def process_exception(self,request,exception): print(SecondMyMiddleware process_exception) return HttpResponse(SecondMyMiddleware process_exception) def process_template_response(self,request,response): print(SecondMyMiddleware process_template_response) return response.render() class ThirdMyMiddleware(MiddlewareMixin): def process_request(self,request): print(ThirdMyMiddleware process_request) def process_response(self,request,response): print(ThirdMyMiddleware process_response) return response def process_view(self,request,view_func,view_args,view_kwargs): print(ThirdMyMiddleware process_view) def process_exception(self,request,exception): print(ThirdMyMiddleware process_exception) def process_template_response(self,request,response): print(ThirdMyMiddleware process_template_response) return response6、示例-URL过滤1.setting:py文件中的配置from django.contrib import admin from django.urls import path from middleware_app import views urlpatterns [ path(middleware_test/, views.middleware_test), path(middleware_url/, views.middleware_url), ]2.增加upgrade.html模板!DOCTYPE html html langen head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDocument/title /head body p当前系统正在升级预计2022年1月1日0点0分0秒升级完成到时欢迎使用!/p /body /html3. middleware.pyclass UrlMyMiddleware(MiddlewareMixin): def process_request(self,request): if request.path.startswith(/middleware_url/): return render(request,middleware_app/middleware_url.html)来源https://www.bilibili.com/video/BV1o1ygBqESP?spm_id_from333.788.player.switchvd_source559010002481cf347abbb2b3ce57ed44p29免责声明本文内容为个人在互联网学习过程中整理的笔记旨在记录学习心得与知识要点。文中部分内容可能参考或引用了网络上的公开资料、教程或他人观点。版权声明原创性声明本文部分内容为个人总结与理解但可能包含他人观点或公开资料。引用来源如涉及第三方内容本人尽力标注来源但因网络信息庞杂可能存在遗漏或误用的情况。侵权处理若您认为本文内容侵犯了您的合法权益如著作权、版权等请通过以下方式联系本人留言在本文评论区或相关平台留言说明具体情况。收到通知后本人将第一时间核实并采取适当措施如删除或修正相关内容。使用说明本文仅供学习交流使用请勿用于商业用途。读者可参考本文内容但建议结合官方文档或其他权威资料进一步验证。因个人理解或笔记记录可能存在偏差请谨慎参考。感谢您的理解与支持
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

先做网站还是做APPai室内设计生成软件

Langchain-Chatchat模糊测试(Fuzzing)知识问答系统 在企业日益依赖人工智能进行内部决策支持的今天,一个看似智能的知识助手突然因一段异常输入而崩溃——这不仅影响用户体验,更可能暴露系统深层的安全隐患。尤其当这套系统承载着…

张小明 2026/3/5 2:38:54 网站建设

淄博企业网站建设价格星子网新闻事件

一、为什么 radius 和 error 的比值是 3:1? 这个 3:1 的比值并非偶然,而是空间匹配 / 几何计算中常用的经验阈值或数学约束,主要源于以下核心原因: 误差容忍的经典比例(3σ 原则) 在统计学和空间数据处理中…

张小明 2026/3/5 2:38:56 网站建设

海门建网站公司2003 建设网站

Spring AI 核心架构解析:构建企业级 AI 应用的 Java 新范式 随着生成式 AI 技术的迅猛发展,大语言模型(LLM)已从研究实验室走向企业生产环境。然而,如何将 LLM 能力安全、稳定、可维护地集成到现有系统中,…

张小明 2026/3/5 2:38:54 网站建设

医药电子商务网站建设与管理27岁女生学前端开发晚吗

摘要:随着云游戏技术成熟,云电脑已成为玩家畅玩3A大作的主流选择。但市场上服务众多,宣传各异,究竟谁家延迟最低?谁家配置最强?谁家价格最实在?本测评对十款主流云电脑及云游戏平台进行了深度实…

张小明 2026/3/5 2:38:56 网站建设

seo站长工具查询wordpress 浏览器不居中

深入解析 Linux 安全技术:用户账户与密码管理 1. Linux 备份工具概述 在 Linux 系统中,有多种备份工具可供选择,其中 cpio、dump/restore 和 tar 通常是预安装的。而 amanda 虽然默认未安装,但因其具有高度的灵活性,甚至能备份 Windows 系统,所以广受欢迎。若你想了解更…

张小明 2026/3/5 2:38:55 网站建设

如何建立一家网站手机设计菜单制作软件

想象一下,你是一位刚入职的图书管理员,面前有十万本书,但馆长只给了你一百本书的详细分类标签(比如“科幻”、“历史”、“烹饪”)。剩下的九万九千九百本,都需要你来整理上架。你会不会觉得无从下手&#…

张小明 2026/3/5 2:38:58 网站建设