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

怎么介绍自己做的电影网站网站建设必须要服务器吗

怎么介绍自己做的电影网站,网站建设必须要服务器吗,做内部网站cms,梧州网站设计公司系列文章目录 Django入门全攻略#xff1a;从零搭建你的第一个Web项目Django ORM入门指南#xff1a;从概念到实践#xff0c;掌握模型创建、迁移与视图操作Django ORM实战#xff1a;模型字段与元选项配置#xff0c;以及链式过滤与QF查询详解Django ORM深度游#xff… 系列文章目录 Django入门全攻略从零搭建你的第一个Web项目Django ORM入门指南从概念到实践掌握模型创建、迁移与视图操作Django ORM实战模型字段与元选项配置以及链式过滤与QF查询详解Django ORM深度游探索多对一、一对一与多对多数据关系的奥秘与实践跨域问题与Django解决方案深入解析跨域原理、请求处理与CSRF防护Django视图层探索GET/POST请求处理、参数传递与响应方式详解Django路由与会话深度探索静态、动态路由分发以及Cookie与Session的奥秘Django API开发实战前后端分离、Restful风格与DRF序列化器详解Django REST framework序列化器详解普通序列化器与模型序列化器的选择与运用Django REST framework关联序列化器详解掌握复杂关系的序列化与反序列化艺术Django REST framework中GenericAPIView与混入扩展类详解Django REST framework视图集与路由详解深入理解ViewSet、ModelViewSet与路由映射器Django中间件探索揭秘中间件在Web应用中的守护角色与实战应用还在写0.0… 文章目录 系列文章目录前言一、默认中间件1. 中间件作用2. 中间件执行顺序 二、自定义中间件1. 钩子方法的种类2. 自定义中间件a. 自定义中间件并注册b. 提供一个测试中间件效果的正确视图c. 提供一个测试中间件效果的错误视图d. 提供一个测试中间件效果的模板视图 前言 Django中间件 是Web应用中的隐形守护者负责在请求与响应之间执行关键任务。本文将解析Django默认中间件的作用并教你如何编写和注册自定义中间件。通过实际案例你将了解中间件在视图处理、错误处理和模板渲染中的作用。 一、默认中间件 1. 中间件作用 Django中的中间件是一个轻量级、底层的插件系统可以介入Django的请求和响应处理过程全局修改Django的输入或输出。 中间件的设计为开发者提供了一种无侵入式的开发方式增强了Django框架的健壮性。我们可以使用中间件在Django处理视图的不同阶段对输入或输出进行干预。 因为改变的是全局所以需要谨慎使用用不好会影响到性能. 作用 在不改 django框架源代码的基础上 新增全局的扩展功能 本质就是个装饰器 - - - 中间件只需要添加一次 所有的接口都生效 2. 中间件执行顺序 如果你想修改请求例如被传送到view中的**HttpRequest对象。 或者你想修改view返回的HttpResponse**对象这些都可以通过中间件来实现。可能你还想在view执行之前做一些操作这种情况就可以用 middleware来实现。 Django默认的中间件在django项目的settings模块中有一个 MIDDLEWARE_CLASSES 变量其中每一个元素就是一个中间件如下图 #settings.py MIDDLEWARE [django.middleware.security.SecurityMiddleware,# 为request/response提供了几种xss脚本过滤的安全改进无它不安全django.contrib.sessions.middleware.SessionMiddleware,# 开启session会话支持无它无sessiondjango.middleware.common.CommonMiddleware,# 基于APPEND_SLASH和PREPEND_WWW的设置来重写URL# 如果APPEND_SLASH设为True并且初始URL 没有以斜线结尾以及在URLconf 中没找到对应定义这时形成一个斜线结尾的新URL# 如果PREPEND_WWW设为True前面缺少 www.的url将会被重定向到相同但是以一个www.开头的urdjango.middleware.csrf.CsrfViewMiddleware,# 添加跨站点请求伪造的保护通过向POST表单添加一个隐藏的表单字段并检查请求中是否有正确的值无它无csrf保护django.contrib.auth.middleware.AuthenticationMiddleware,# 在视图函数执行前向每个接收到的user对象添加HttpRequest属性表示当前登录的用户无它用不了request.userdjango.contrib.messages.middleware.MessageMiddleware,# 开启基于Cookie和会话的消息支持无它无messagedjango.middleware.clickjacking.XFrameOptionsMiddleware,# 对点击劫持的保护 ] 二、自定义中间件 1. 钩子方法的种类 django中默认给咱们提供了几个中间件如果在过程中开发者想自己对请求和响应做出特殊处理需要自己定义一个中间件自定义的中间件需要继承 django.utils.deprecation.MiddlewareMixin这个类。并重写对应的方法。 中间件中重写的5个方法: 1、process_request(self,request) 2、process_view(self, request, callback, callback_args, callback_kwargs) 3、process_template_response(self,request,response)4、process_exception(self, request, exception)5、process_response(self, request, response) 以上方法的返回值可以是None或一个HttpResponse对象如果是None则继续按照django定义的规则向后继续执行如果是HttpResponse对象则直接将该对象返回给用户。 2. 自定义中间件 a. 自定义中间件并注册 自定义中间件 示例代码如下 # customMiddleware.py from django.http import HttpResponse from django.utils.deprecation import MiddlewareMixinclass CustomMiddleware(MiddlewareMixin):def process_request(self, request):处理请求前: 在每个请求上request对象产生之后url匹配之前调用,返回None或HttpResponse对象print(before request, request)def process_view(self, request, view_func, *view_args, **view_kwargs)::param view_func: Django即将使用的视图函数,它是实际的函数对象而不是函数的名称作为字符串:param view_args: 将传递给视图的位置参数的列表:param view_kwargs: 将传递给视图的关键字参数的字典;view_args和view_kwargs都不包含第一个视图参数request# 处理视图前在每个请求上url匹配之后视图函数调用之前调用返回None或HttpResponse对象print(before view)def process_template_response(self, request, response):# 在视图函数执行完后立即执行的, 执行 该 函数有一个前提条件那就是视图函数返回的对象是一个 TemplateResponse 对象或等价方法, 直接返回render函数无效print(render template)return responsedef process_exception(self, request, exception):# 这个方法只有在视图函数中出现异常了才执行它返回的值可以是一个None也可以是一个HttpResponse对象print(raise exception)return HttpResponse(exception)def process_response(self, request, response):# 处理响应后视图函数调用之后所有响应返回浏览器之前被调用在每个请求上调用返回HttpResponse对象print(after response, response)return response在process_response中可以实现将返回数据修改操作 ,示例代码此代码只可以响应drf的Response有效因为普通HttpResponse中没有data属性 from django.utils.encoding import force_str, force_bytes import jsondef process_response(self, request, response):if response[Content-Type] application/json:# 解码JSON数据data json.loads(force_str(response.content))# 修改数据data[modified_key] modified_value# 重新编码JSON数据response.content force_bytes(json.dumps(data))return response 注册中间件 在 django 项目的 settings 模块中在 MIDDLEWARE_CLASSES 变量中添加自定义中间件 MIDDLEWARE [# 添加自定义的中间件---CustomMiddlewareapp.customMiddleware.CustomMiddleware,corsheaders.middleware.CorsMiddleware,django.middleware.security.SecurityMiddleware,...... ]b. 提供一个测试中间件效果的正确视图 b.提供一个测试中间件效果的正确视图 # views.py from rest_framework.views import APIView from django.http import HttpResponse# Create your views here.class IndexView(APIView):def get(self, request):print(IndexView)return HttpResponse(Hello Index GET) 当用户发起请求的时候会依次经过所有的的中间件这个时候的请求会依次穿过所有中间件的process_request方法,最后到达views的函数中views函数处理后在依次穿过所有中间件的process_response方法,最后返回给请求者。 中间件执行结果展示 访问路径http://localhost:8000/app/index/ before request WSGIRequest: GET /app/index/ before view IndexView after response HttpResponse status_code200, text/html; charsetutf-8 [16/Jun/2024 19:55:45] GET /app/index/ HTTP/1.1 200 15c. 提供一个测试中间件效果的错误视图 c.提供一个测试中间件效果的错误视图 # views.py from rest_framework.views import APIView from django.http import HttpResponse# Create your views here.class IndexView(APIView):def get(self, request):print(IndexView)3/0return HttpResponse(Hello Index GET) 此时视图发生异常 会执行中间件的 process_exception方法而在该方法中将异常信息作为响应返回因此页面显示division by zero 中间件执行结果展示 访问路径http://localhost:8000/app/index/ before request WSGIRequest: GET /app/index/ before view IndexView raise exception after response HttpResponse status_code200, text/html; charsetutf-8 [16/Jun/2024 19:58:22] GET /app/index/ HTTP/1.1 200 16d. 提供一个测试中间件效果的模板视图 d.提供一个测试中间件效果的模板视图 # views.py from django.template.response import TemplateResponse from rest_framework.views import APIView# Create your views here.class IndexView(APIView):def get(self, request):print(IndexView)return TemplateResponse(request, index.html) 注意: 只有返回的对象是TemplateResponse 对象或等价方法时才执行中间件的 process_template_response方法直接调用render方法无效。 中间件执行结果展示 访问路径http://localhost:8000/app/index/ before request WSGIRequest: GET /app/index/ before view IndexView render template after response TemplateResponse status_code200, text/html; charsetutf-8 [16/Jun/2024 19:59:20] GET /app/index/ HTTP/1.1 200 182TemplateResponse VS render TemplateResponse将模板的渲染延迟到视图完成之后。这允许任何模板响应中间件在响应上运行并有可能在呈现模板之前更改模板或上下文数据。模板响应中间件运行后将渲染模板并在将响应返回给客户端之前对渲染的内容运行常规响应中间件。render立即呈现模板并返回HttpResponse。
http://www.hkea.cn/news/14451866/

相关文章:

  • 广西城乡建设名网站代理网络游戏需要什么手续
  • 怎么做视频解析的网站html基础菜鸟教程
  • 传统网站与营销型网站做设计应该看哪些网站
  • 建建设网站的网站开发哪家公司口碑好
  • 基金管理公司司网站建设要求免费网站后台管理系统
  • 网站建设定制开发服务wordpress 中文 chm
  • 许昌北京网站建设专业做医院网站建设
  • 做排行的网站长春网架公司
  • 莱芜招聘的网站鞍山网站建设优化
  • 团购网站怎么做网站建设cach目录
  • 网站定制业务个人店铺logo
  • 什么是高端网站建设企业文化心得体会总结
  • 自己怎么样做网站廊坊建站服务
  • 店铺网站平台建设方案焦作建设网站
  • 网站建设多少费用泰州seo推广
  • 网站建设与实现的要求与务设计制作小车二教学反思
  • 专门做美食的视频网站有哪些阿里云域名注册查询
  • 二手网站建设论文wordpress cui2.0
  • 网站建好后如何上线网络科技公司组织架构
  • 网站建设视频格式长春市建设集团股份有限公司
  • 免费做简单网站株洲市住房和城乡建设局网站
  • 温州建校网站wordpress twitter登陆
  • 网站首页分辨率做多大的榆次住房保障和城乡建设局网站
  • 网站广告条幅怎么做动态的外贸网站制作怎么选
  • 做购物网站是怎么连接银行南充房产交易网官网
  • 网站建设如何插音乐商务网站的推广
  • 网站外链内链怎么做中国三大搜索引擎
  • 重庆哪家做网站做旅游网站有前途吗
  • 北京网站建设 地址海淀phpcms校园网站
  • 无锡网站优化推广短视频询盘获客系统