模型类多表操作和中间件

Python后台开发——Django高级与项目实战 1 Cookie 1.1 Cookie机制 在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这 阅读详情

 

class User2(models.Model):
    username = models.CharField(max_length=16)

class News(models.Model):
    topic = models.CharField(max_length=100)
    #to指向一的一方,一对多 ;on_delete外键约束,级联操作;
    #帖子的发送者,一对多的关系
    # 一个User2对象能对应多个News对象,一个News对象只能对应一个User2对象
    sender = models.ForeignKey(to=User2,on_delete=models.CASCADE,related_name='sender_set')
    #帖子的收藏者,多对多的关系,会生成一个中间表用来表示多对多的关系
    #一对多的关系一个User2对象能对应多个News对象,一个News对象也能对应多个User2对象
    collectors = models.ManyToManyField(to=User2,related_name='collectors_set')

class Area(models.Model):
    name = models.CharField(max_length=10)
    pArea = models.ForeignKey(to='self',null=True,on_delete=models.CASCADE)
'''
news.sender 得到帖子的发送者,返回的是User.Object对象
user.sender_set.all() 返回的是QuerySet [<News: News object (1)>,...]
user.sender_set.add(news)       给用户添加一个new对象,相当于添加一个帖子
user.sender_set.remove(news)    给用户删除一个new对象,相当于删除一个帖子

news.collectors.all()    返回的是QuerySet [<User2: User2 object (1)>,...]对象,这个帖子的所有收藏者
user.collectors_set.all() 和上面的正好是相反的,这个是通过该用户获取所收藏的所有帖子,也是QuerySet [<News: News object (1)>,...]
user.collectors_set.add(news) 给用户 添加一个所收藏的帖子
user.collectors_set.remove(news) 给用户 删除一个所收藏的帖子

area.pArea → Area Object   得到的是他的 上级 返回的是 Area Object
area.area_set.all() → QuerySet 没有指明 related_name 属性的值,使用area_set(类名小写然后加上set 来找到多的一方这里是找到所有的下级)

'''

 

1. 定义中间件
from django.utils.deprecation import MiddlewareMixin

class MyMiddleware(MiddlewareMixin):
    def __init__(self,get_response=None):
        super().__init__(get_response)
        # 初始化中间件
        print('init_mymiddleware')

    def process_request(self,request):
        # 没有return或者return None 继续调用其他视图
        # return response 则不会调用其他视图
        print('process_request')


    def process_response(self,request,response):
        # 必须return response
        print('process_response')
        return response



2. 配置中间件
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',
    'middleware.MyMiddleware'
]

20.Django七道高频面试题【涉及:ORM、信号机制、中间件、缓存机制、事务管理、认证和授权、FBV和CBV】 阅读详情

相关推荐

23.网工入门篇--------介绍一下园区网典型组网架构及案例实践

园区网典型组网架构主要分为小型、中型、大型三种类型,以下是详细介绍及相关案例实践:

qq_31450765的博客 965

一文快速了解大模型中间件

大模型中间件是连接底层计算资源与上层应用的桥梁,负责管理和优化多个大模型的运行。它不直接参与模型运算,而是像交响乐团的指挥家或交通指挥中心,协调不同模型之间的协作,确保它们高效、安全地工作。无论是文本生成、图像识别还是代码生成,中间件都能统一调度,让AI从“实验室黑科技”变成“企业好员工”。大模型中间件就像一个超级调度员,管理着一个庞大的AI工厂,确保每个“工人”(模型)都能在正确的时间和位置完成任务。

欢迎来到运通链达的官方博客!我们深度探讨人工智能技术与应用,贯彻科技向善理念,推动科技进步与社会福祉和谐共生。 2712

大数据国赛第2套任务C-子任务一特征工程

根据**Hudi**的dwd_ds_hudi库中相关表或MySQL中shtd_store中相关表(order_detail、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;

weixin_44117248的博客 904

模型类多表操作

外键种类 ForeignKey 一对多 ManyToManyFielf 多对多 OneToOneField 一对一 参数 to 引用的模型类(自关联“self”) on_delete 外键约束: model.CASCADE 级联操作(多对一,一的一方删除,多的一方也删除) model.PROTECT 报异常(被引用的一方不能删除) model.SET_NULL ...

dremcl的博客 197

DPARSF高级版 vs 基础版怎么选?没有T1数据也能做fMRI分析吗?

本文深度对比了DPARSF高级版与基础版在fMRI分析中的核心差异与适用场景,特别针对无T1数据的情况提供了实战解决方案。高级版依赖T1像实现高精度配准,适合需要精确解剖定位的研究;基础版则无需T1数据,适用于功能连接等相对空间要求不高的分析。文章还提供了版本选择决策树和常见问题解决方案,帮助研究者根据实际需求做出最优选择。

weixin_42526087的博客 132

vscode中创建vue快捷键

1.安装Vetur插件(扩展里面直接搜) 2.vscode 界面里面左上角选则 文件=> 首选项=> 用户代码片段=>新建全局代码片段=>在输入框中新建名称为vue.json 3.删除里面的注释,当然你也可以留着,把下面的代码粘贴进去! { // Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // descri

Leon_940002463的博客 3207

浅析深究什么是中间件

本文发布于2009年10月30日   1. 由来   因为工作的原因,我从金蝶集团调入金蝶中间件公司工作以来,经常遇到一个问题就是中间件公司是个什么公司,中间件是什么?,金蝶不是做ERP的吗?怎么也做中间件?。这是我以前在金蝶集团时无法想象的问题。因为金蝶,金蝶ERP的品牌以及大众对ERP的了解,是无需我解析什么是ERP,什么是财务软件一类的问题的。   毕竟,中间件在实际的应用

hxl188的专栏 6262

【TC3xx芯片】TC3xx芯片电源管理系统PMS详解

本文主要介绍了TC3xx芯片的电源管理系统(PMS),重点探讨了供电模式选择、电源监控机制及电源管理模式。文章首先分析了4种供电模式及其硬件配置方式,详细说明了3.3V单电源供电模式的特点;其次阐述了Primary和Secondary两种电源监控机制,包括阈值配置和异常中断处理;最后重点讲解了CPU和系统的电源管理模式,特别对Standby模式及其进入/退出条件进行了详细说明。文章以软件开发视角解析了TC3xx芯片的电源管理功能,为ECU低功耗设计提供了技术参考。

redparrot2008的博客 1528

【中间件常用写法】中间件架构中常用模型详解

一.写在前面 源码看的多了,就会感觉到很多架构都有相似的地方,许多操作都有其通用性。就像框架中的一些组件,以及他们承担的责任,都有相似的地方,这篇博客就来分析一下组件中通用类的作用。 二.组件中通用类分析 首先我们看一下现在很流行的seata框架,它的全局事务的控制是如何做到的: 这是seata的整体架构图,细节很多,主要说一下每个Microservice如何管控自己的Branch事务分支并与TC...

赵润泽 1464

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

SAP-ABAP:BAPI_INSPOPER_RECORDRESULTS 记录检验操作结果更新检验批状态详细解析

baidu_35680696的博客 968

在PPT里如何做出晶莹剔透的高级水泡感出来呢

水晶汽泡被大量使用在TED场景的演讲片稿中,给人以强烈的视觉冲击感。其实实现很简单。本篇就用三步教会大家如何制作这样的一种PPT效果。

打造全国最全的AI Agent开发知识领域的博客 1537

模型类多表操作;中间件使用

模型类多表操作 中间件使用

weixin_45620570的博客 1473

无人机:DJI Matrice 600 Pro_(8).DJI_Matrice_600_Pro_负载能力

在一些高级应用场景中,可能需要自定义开发负载设备。

zhubeibei168的博客 1341

Django ORM操作 session操作 中间件

django ORM Session 中间件

qq_36762914的博客 442

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

update 关联两张表_19. Django 2.1.7 模型的关联

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的F对象、Q对象、聚合查询等功能。但是没有讲到两张表的关联查询的实现,这个在模型里面该怎么处理呢?参考文献https://docs.djangoproject.com/zh-hans/2.1/ref/models/relations/https://docs.djangoproject....

weixin_39605296的博客 136

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

基于Django中间件的权限认证组件

用户权限认证组件包括权限model类和中间件类 model类介绍 Permission 权限类 权限基本信息包括title:权限名称 url:权限具体url Role 角色类 角色类包括title:角色名称 permission:角色的权限 权限和角色多对多关系 用户类需要对Role类设置多对多映射 Whitelist 白名单类 白名单包括title:权限名称 url:权限...

wuliwawa的博客 1236

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Django 2.1.7 基于默认sqlite3 模型设计 以及 数据操作

上一篇章讲述了如何创建项目,本篇章主要讲解Django的模型设计。 参考文献 Django 官网 2.1 文档 一般操作数据库是通过写sql语句,那么能不能不写sql语句就可以操作数据库呢? 可以,就是通过接下来要给大家讲的ORM框架。 本篇章首先使用Django默认使用的sqlite3,后续再继续讲解使用mysql。 ORM框架 O是object,也就类对象的意思,...

DevOps海洋的渔夫@专栏 448

Laravel框架的核心特性(如路由、中间件、Eloquent ORM)是什么?

Laravel通过路由系统实现了灵活的URL映射与请求分发,中间件机制提供了可扩展的请求过滤层,而则以面向对象的方式简化了数据库操作。三者协同工作,使Laravel成为高效、安全且易维护的PHP框架。开发者可通过路由定义业务逻辑入口,通过中间件实现安全与业务规则,最后通过Eloquent处理数据持久化,构建复杂的Web应用。

破损的天堂鸟博客 958

Django学习笔记

Django学习笔记1 Django的快速入门1.1 模型类的设计和表生成1.1.1 模型类1.1.2 表生成1.2 通过模型类操作数据表1.3 模型类关系和关系查询1.3.1 模型类关系1.4 Django后台管理(ip:端口/admin)1.4 视图1.5 模板1.5.1 手动方式1.5.2封装方式1.5.3 html文件内的布置2 模型详解2.1 Django连接Mysql数据库2.2 模型类字段、属性及其约束2.3 查询函数2.4 Q对象,实现多条件查询2.5 F对象,实现属性之间的比较2.6 聚合

qq_45688383的博客 1456

FastAPI 进阶:中间件、依赖注入与 ORM

本文深入探讨FastAPI框架的三个核心进阶特性:中间件、依赖注入和ORM。中间件用于全局请求/响应处理,实现日志、认证等功能;依赖注入通过Depends实现代码复用和解耦;ORM(如SQLAlchemy)简化数据库操作,提高安全性。三者结合使用可构建高效、易维护的API应用,中间件处理全局逻辑,依赖注入管理路由共享代码,ORM实现面向对象数据库访问,使开发更优雅高效。

星空椰 1008

laravel 中间件不生效_TP框架和Laravel框架的区别

最近在学习laravel的框架,此前一直是使用TP框架。在网上搜索了laravel与tp的区别,在此记录学习。TP框架:ThinkPhp简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区文档活跃,相较于TP,Lavavel更庞大,安全性也更高,更适合开发大中型项目...

weixin_30848953的博客 121

中间件,配置数据库,生成迁移文件

上一篇讲了获取数据的方法,和使用 redirect 跳转页面 反解析 获取地址 有时候路由会发生改变,那么对应的视图的redirect跳转页面时的路径也要一起改变,为了避免太多的操作,所以使用反解析获取地址后,无论子应用里路由名字怎么变,对应的视图里都可以直接获取到改变后的最新路由 设置 1.总路由 urls里给应用添加别名 2.子应用里给单独的视图起别名 3.在视图中 用reverse获取对应的地址 中间件 django框架 不管是发送request请求前后 还是 返回response响应前

玛卡巴卡 357

验证码、文件上传和中间件

1、验证码 1、作用 为了更好的保障请求的合法性,防止无效访问,恶意访问,暴力破解等攻击。 包 pip install pillow 2、验证码的使用 导入第三方库 [外链图片转存失败(img-VCLAnYVm-1568627975116)(file:///C:/Users/%E9%9C%8D%E6%96%B0%E9%98%B3/Desktop/%E5%9F%B9%E8%AE%AD/%E7%A...

qq_37839978的博客 555

使用JWT(无Cookie)的ASP.NET CORE令牌认证和授权——第1部分

本文演示如何在Asp.Net CORE中使用JWT(JSON Web令牌)实现令牌认证和授权。本文中使用的方法不使用任何客户端cookie进行身份验证和授权。这意味着,Token不存储在客户端浏览器中,它完全由服务器端处理。由于本文主要关注实现ASP.NET CORE身份验证和授权,因此我们不会深入了解令牌配置和令牌创建。从实现的角度来看,仅给出了令牌配置和创建的简要说明。有许多文章详细解释了它。本文包括完整的代码和LoginDemo.sln项目

寒冰屋的专栏 2947

laravel路由、中间件、控制器等简单笔记

1.基本路由 - http://laravelacademy.org/post/398.html get() post() put() patch() delete() options() match() - ['get', 'post'] any() - 任意http方法 路由参数 - 普通参数 {name} 路由参数 - 可选约束 {name?} 路由参数 - 正则约束

beyond__devil的博客 4748
上一篇: python框架Django高级内容
下一篇: 数据清洗和提取策略
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值