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

任务1:验证中间件的4个【钩子】函数任务2:验证CBV,和FBV做比较

建设如下文件目录格式配置根项目 urls.pydjango_gate_demo/urls.pyfrom django.contrib import admin from django.urls import path, include urlpatterns [ path(admin/, admin.site.urls), # 集成演示应用路由 path(, include(app_demo.urls)), ]配置django_gate_demo/settings.pyimport os from pathlib import Path # 项目基础路径配置 BASE_DIR Path(__file__).resolve().parent.parent # 安全警告生产环境必须保护密钥安全 SECRET_KEY django-insecure-xxxxxxxxx # 安全警告生产环境请关闭调试模式 DEBUG True ALLOWED_HOSTS [] # 应用配置 INSTALLED_APPS [ django.contrib.admin, django.contrib.auth, django.contrib.contenttypes, django.contrib.sessions, django.contrib.messages, django.contrib.staticfiles, # 注册自定义应用 app_demo, ] # 中间件配置 MIDDLEWARE [ django.middleware.security.SecurityMiddleware, django.contrib.sessions.middleware.SessionMiddleware, django.middleware.common.CommonMiddleware, # 自定义社区门禁中间件 app_demo.middleware.CommunityGateMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.messages.middleware.MessageMiddleware, django.middleware.clickjacking.XFrameOptionsMiddleware, ] ROOT_URLCONF django_gate_demo.urls TEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, DIRS: [], APP_DIRS: True, OPTIONS: { context_processors: [ django.template.context_processors.debug, django.template.context_processors.request, django.contrib.auth.context_processors.auth, django.contrib.messages.context_processors.messages, ], }, }, ] WSGI_APPLICATION django_gate_demo.wsgi.application # 数据库配置 DATABASES { default: { ENGINE: django.db.backends.sqlite3, NAME: BASE_DIR / db.sqlite3, } } # 密码验证配置 AUTH_PASSWORD_VALIDATORS [ { NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator, }, { NAME: django.contrib.auth.password_validation.MinimumLengthValidator, }, { NAME: django.contrib.auth.password_validation.CommonPasswordValidator, }, { NAME: django.contrib.auth.password_validation.NumericPasswordValidator, }, ] # 国际化配置 LANGUAGE_CODE zh-hans TIME_ZONE Asia/Shanghai USE_I18N True USE_TZ True # 静态文件配置 STATIC_URL static/ # 默认主键字段类型 DEFAULT_AUTO_FIELD django.db.models.BigAutoField配置项目总路由django_gate_demo/urls.pyfrom django.contrib import admin from django.urls import path, include urlpatterns [ path(admin/, admin.site.urls), # 后台管理路由 path(, include(app_demo.urls)), # 主应用路由 ]配置app_demo/middleware.pyfrom django.http import HttpResponse class CommunityGateMiddleware: def __init__(self, get_response): self.get_response get_response print(【小区门卫系统】中间件初始化完成) def __call__(self, request): # 入口检查 print(\n 入口检查小区大门登记 ) print(f请求路径{request.path}) print(f请求方法{request.method}) # 拦截特定路径 if request.path /block: return HttpResponse(访问受限该路径禁止通行, status403) # 处理请求并获取响应 response self.get_response(request) # 出口处理 print(\n 出口处理响应修改 ) response.content b\n【门卫检查完成允许通行】 return response配置app_demo/views.pyfrom django.http import HttpResponse from django.views import View # 任务2FBV函数视图 - 直接对接房东 def fbv_landlord_view(request): print( 第二/三道岗路由验证通过 ) return HttpResponse(FBV视图直接与房东签约成功) # 任务2CBV类视图 - 通过中介代理 class CbvAgentView(View): def get(self, request): print( 第二/三道岗路由验证通过 ) return HttpResponse(CBV视图通过中介代理签约房东信息隐藏) # 控制台输出FBV与CBV类型对比 print(\n 中间件视角FBV与CBV类型分析 ) print(fFBV原始类型{type(fbv_landlord_view)}) print(fCBV经as_view()转换后类型{type(CbvAgentView.as_view())}) print(结论中间件视角下两者均为函数类型)应用子路由 app_demo/urls.pyfrom django.urls import path from app_demo.views import fbv_landlord_view, CbvAgentView urlpatterns [ # 函数视图路由 path(fbv/, fbv_landlord_view), # 类视图路由使用as_view()方法转换 path(cbv/, CbvAgentView.as_view()), # 中间件拦截测试路由 path(block/, lambda req: HttpResponse(请求被中间件拦截)), ]
http://www.gsyq.cn/news/1295656.html

相关文章:

  • 【ArcGIS实战指南】利用属性连接与符号化,一键生成柱状图与饼状图
  • 深度解析Spreadsheets-are-all-you-need:AI驱动的浏览器电子表格实战指南
  • 暗黑破坏神2存档修改器终极指南:免费打造完美角色
  • 联想刃7000k BIOS深度解锁:释放硬件潜能的完整指南 [特殊字符]
  • 从换电博弈到芯片浪潮:新能源汽车与半导体产业交叉机遇解析
  • 基于MCP协议构建Jira连接器:打通AI助手与项目管理的技术实践
  • Android.mk条件判断全解析:从语法到实战,掌握多架构与版本兼容
  • 集成Hermes Agent时如何正确配置Taotoken作为自定义模型提供商
  • 工业级SD NAND选型与品质保障全流程实战指南
  • 实战指南:在Ubuntu 22.04上部署xNIDS,联动Suricata与iptables实现自动化入侵响应
  • 利用Taotoken模型广场为Python数据分析项目选型
  • 终极指南:如何使用webSpoon快速构建企业级数据集成平台
  • 终极MP4视频修复指南:5分钟掌握untrunc无损修复技术
  • 3PEAK思瑞浦 TPA1862-DF7R DFN3X3-8 精密运放
  • 观察使用 Token Plan 套餐后月度模型调用成本的变化趋势
  • 企业AI Agent安全防护体系
  • 开发AI助手微服务时利用Taotoken实现模型的热切换与降级
  • 天眼实战:从告警分析到威胁溯源的完整攻防演练
  • GHelper终极指南:如何用3个步骤彻底释放华硕笔记本性能潜能
  • 腾讯云轻量服务器镜像搬家到本地硬盘:一个被共享按钮“骗”了的故事
  • 从CSV文件到3D点云:用Qt+OpenGL打造一个简易的激光雷达数据查看器
  • 浏览器配置容器化:开源工具实现多环境隔离与自动化管理
  • Zotero Duplicates Merger:如何智能清理文献库中的重复条目
  • 从零搭建家庭实验室:Docker与Traefik构建私有云平台
  • FigmaCN:设计师的终极语言助手,3分钟告别英文界面困扰
  • 深入TC3xx SPI时序:从DataSheet波形图到EB Tresos参数配置的完整解析
  • 自建ChatGPT API代理网关:解决网络延迟与安全管控的实战指南
  • AkVirtualCamera终极指南:如何在Mac和Windows上轻松创建虚拟摄像头
  • 用Python搞定常微分方程:从显式RK4到隐式IRK6,一个类全搞定(附完整代码)
  • 3PEAK思瑞浦 TPA1861Q-S5TR-S SOT23-5 运算放大器