当前位置: 首页 > news >正文

门户网站如何做谷歌seo网站制作公司大型

门户网站如何做谷歌seo,网站制作公司大型,免费提供网站,扬州市住房和建设局网站这一节介绍一下 Django 的中间件。 关于中间件#xff0c;官方文档的解释为#xff1a;中间件是一个嵌入 Django 系统的 request 和 response 的钩子框架#xff0c;是一个能够全局改变 Django 输入/输出的系统。 我们可以这样理解#xff0c;一个 request 请求发送到 Dj…这一节介绍一下 Django 的中间件。 关于中间件官方文档的解释为中间件是一个嵌入 Django 系统的 request 和 response 的钩子框架是一个能够全局改变 Django 输入/输出的系统。 我们可以这样理解一个 request 请求发送到 Django 系统的过程中在经过路由和视图的处理前会先经过一层处理这个处理操作可以是日志记录可以是登录验证甚至你想在系统里定义的功能这个操作就是中间件实现的功能。 接下来我们将通过一个记录请求的 ip 的功能的介绍来介绍一下中间件的实现流程。 以下是本篇笔记目录 请求经过 Django 然后返回的流程HttpRequest 和 HttpResponse 介绍中间件的示例介绍记录访问 ip 的功能实现 1、请求经过 Django 然后返回的流程 首先前端发起一个请求这个请求经由 web 服务器转发给 Django 系统在进入 Django 系统后会先经过一系列的中间件的功能处理。 这个中间件会在 settings.py 里定义Django 系统默认自带的中间件列表如下 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, ]这些中间件我们也可以根据自己的需求自己定义比如新加一个登录权限或者日志记录或者对输入的参数进行格式化处理也可以或者自己想要设置的其他功能也行具体怎么设置在后面介绍。 在中间件处理的流程中请求会被按照顺序从上往下处理。  这个流程过后一个 request 请求才会被进行 URL 的路径匹配如果匹配上再去找相应的 views 视图函数进行数据处理 views 处理完之后会形成一个 response返回然后再次经历这个中间件处理因为在每一层中间件中都类似于一种嵌套所以返回 response 的时候是从下往上再次处理 response 的。 中间件处理结束之后再被返回出去给到前端。 在这整个流程处理中可以说中间件是进行了两次操作一个是进入的时候处理 request一个是返回的时候处理 response。 2、HttpRequest 和 HttpResponse 介绍 我们先来看一个视图函数 def time_view(request):now datetime.datetime.now()html h1now: %s/h1abc\nabc % nowreturn HttpResponse(html)当 Django 接收到一个请求系统会创建一个 HttpRequest 对象这个对象就是上面的视图函数里的输入参数request 在对数据进行处理后系统会返回一个 HttpResponse 对象这个就是我们 return 的内容。 在一个 HttpRequest 对象里会包含请求的路径、参数、请求方式、 cookie 等一切请求过来时的数据我们可以在请求的时候根据需要存取。 在返回的 HttpResponse 中可以是一个 html 页面也可以是 json 格式的数据内容是可以自定义的只要前端可以做相应的处理。 3、中间件的示例介绍 接下来我们定义一个中间件结构大致如下 # huter/middleware.pyclass SimpleMiddleware:def __init__(self, get_response):self.get_response get_responsedef __call__(self, request):# 在请求进入视图函数前的可以执行一些操作针对 requestprint(request.path)response self.get_response(request)# 在处理完请求后可以执行一些操作针对 response# log_response_info()return response然后我们在 sttings.py 里引入这个中间件我们放到 MIDDLEWARE 列表的最下面说明这个中间件会在其他中间件处理完 request 之后再处理 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,hunter.middleware.TestMiddleware, ]在 SimpleMiddleware 这个类里call() 函数会自动调用其中有一行response self.get_response(request) 在这一行函数之前可以对请求的 request 做处理包括我们前面说的各种功能比如日志、登录验证、参数格式化等 在这一行函数之后获取了 response这个就是视图函数返回的 HttpResponse我们可以在这里对它的 response.status_code 状态码和 response.content 做处理 比如前面 time_view 函数返回的内容是一个 JsonResponse return JsonResponse({code: 0})那么在这里我们可以获取然后处理这个 HttpResponse def __call__(self, request):response self.get_response(request)content json.loads(response.content)content[msg] successresponse.content json.dumps(content)return response这里只是一个示例因为并不是所有的 HttpResponse 都是 json 格式的数据所以可能需要加一个 try except 做下处理 还有一个功能是我之前做过的就是在 headers 中加一个特定的字符串表示是我们系统专有的用于前端判断这个很简单就是在 response 的 headers 参数中加一个键值对 response.headers[system] hunter以上就是一个最简单的中间件的处理方式。 process_view 除了 call 函数以外还有一个 process_view() 的函数 这个函数是在 Django 系统调用 views 视图函数前被调用它的返回值是 None 或者一个 HttpResponse 如果为 None那么系统会接着调用视图函数如果是 HttpResponse 作为返回值说明系统在这里已经处理了请求不需要再走views视图函数然后就会直接返回。 我们通过下面的例子来解释这个函数作用。 4、记录访问 ip 的功能实现 假设我们需要禁止某一个或者某一个 ip 列表的请求访问我们的系统 当然这个操作在 web 服务器那部分就可以拦截这里就是单纯举个例子 那么我们这样设置一个 process_view 的功能在真正执行视图函数也就是url 匹配上的 view函数前取出这个 request 的访问的ip然后进行判断如果在 禁止列表那么则直接返回一个禁止访问的页面。 class TestMiddleware:def __init__(self, get_response):self.get_response get_responsedef __call__(self, request):response self.get_response(request)return responsedef process_view(self, request, view_func, *view_args, **view_kwargs):EXCLUDE_IPS [192.168.1.54]if HTTP_X_FORWARDED_FOR in request.META:ip request.META[HTTP_X_FORWARDED_FOR]else:ip request.META[REMOTE_ADDR]if ip in EXCLUDE_IPS:return HttpResponse(h1您的ip被禁止/h1)return None在这里我们拿到请求的 ip 地址去和我们定义的禁止ip列表做比较 如果在禁用列表则直接返回 HttpResponse不接着请求我们的服务来 否则就返回 None系统接收到 None 之后会接着往下处理。
http://www.zqtcl.cn/news/643142/

相关文章:

  • 摄影网站在线建设办公室设计装修
  • 深圳市移动端网站建设游戏网站建设与策划方案
  • wap版网站 加app提示厦门网站seo优化
  • 旅游网站 功能建设银行网站会员
  • 公园网站建设wordpress 分类目录使用英文
  • 苏州高端网站设计制作wordpress改固定连接
  • 门户网站开源sae安装wordpress
  • 建设彩票网站需要哪些要求城乡与住房建设厅网站首页
  • 公司做网站费用计入什么科目网络建设规划
  • 外贸网站建设案例深圳设计网站培训
  • 龙岗地区做网站公司北京装饰公司排行 2019
  • 大企业网站建设方案wordpress博客模板查询
  • 手机网站建设动态公司做网站效果怎么样
  • 网站推广和优化教程上海网络科技有限公司招聘
  • 即墨建网站价格商城二次开发
  • 网站排名易下拉教程怎么做网店运营
  • 聊城做网站公司聊城博达海外服务器租用多少钱一年
  • 手机上网站做国外销售都上什么网站
  • 网站建设与管理报告书做电销有什么资料网站
  • 网站建设哪家最好企业商城网站建设方案
  • 舟山市建设工程质量监督站网站网页版微信二维码加载失败
  • 金融网站html5模板给自己家的公司做网站好做吗
  • 新农村建设投诉在哪个网站上海做电缆桥架的公司网站
  • 免费行情100个软件网络优化论文
  • asp.net动态的网站开发个人业务网站带后台
  • 控制网站的大量访问关于实验室建设的英文网站
  • 中国容桂品牌网站建设怎么自己做个网站做链接跳转
  • 安徽省建设工程协会网站昆明官网seo厂家
  • 品牌整合推广搜狗优化好的网站
  • 娄底手机网站制作深圳网站建设怎么做