计算机基础知识64

ForeignKey属性

 to:设置要关联的表

 related_name: 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’

 related_query_name:反向查询操作时,使用的连接前缀,用于替换表名
 to_field:设置要关联的表的字段

 on_delete: OneToOneField, ForeignKey 必须写on_delete,不写报错

   models.CASCADE 删除关联数据,与之关联也删除
   models.DO_NOTHING :publish_id字段原封不动
   models.PROTECT 删除关联数据,引发错误ProtectedError
   models.SET_NULL删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
   models.SET_DEFAULT删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)

   models.SET删除关联数据,
  a. 与之关联的值设置为指定值,设置:models.SET(值)
  b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

publish = models.ForeignKey(to='Publish',on_delete=models.SET_NULL,null=True)
publish = models.ForeignKey(to='Publish',on_delete=models.SET_DEFAULT,default=1)
publish = models.ForeignKey(to='Publish',on_delete=models.DO_NOTHING,db_constraint=False)

 db_constraint:公司一般都设置为False
    是否在数据库中创建外键约束,默认为True
    db_constraint=False  在数据库中不建立外键约束,但是orm查询,继续用

ManyToManyField属性

ManyToManyField 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系

 to 设置要关联的表,中间是有个中间表的,区别于一对多
 related_name 同ForeignKey字段。
 related_query_name 同ForeignKey字段。
 through:

     在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多关联关系
     也可以手动创建第三张表来管理多对多关系,此时需通过through来指定第三张表的表名
 through_fields设置关联的字段。

 db_table 默认创建第三张表时,数据库中表的名称。

中间表创建方式

1、自动生成:用不到through 和  through_fields     

authors=models.ManyToManyField(to='Author',db_table='中间表表名')

2、手动创建中间表,使用through指定
       三张表都要手动创建,3个类、3个表模型
 # 什么情况会使用手动创建----中间表如果有多的字段,都是手动创建

authors=models.ManyToManyField(to='Author',through='booktoauthor', through_fields=('当前表--》到中间表的外键关系','剩下的写在第二个位置'))


# 自动创建中间表,有快捷操作
        -add/-remove/ -set/ -clear
手动创建中间表,中间表我们自己能拿到,这些快捷操作,就没了
# 纯手动创建中间表,不使用ManyToManyField关联
   不会在book或author表中加 ManyToManyField 字段了

django与AJAX

AJAX的概念 : 异步Javascript和XML,就是一种前端技术,用于朝着后端程序发送请求和数据
作用:Javascript语言与服务器(django)进行异步交互,传输的数据为XML,当然传输的数据不只是XML,现在更多使用json数据
特点: 异步,浏览器页面局部刷新
            同步交互:js发送出请求---》直到请求回来---》页面不能操作,不能点击
            异步交互:js发出请求---》等待请求回来的过程中--->页面可以随意继续操作
            局部刷新
使用:使用了jq帮咱们封装的方法  ajax ,名字跟ajax相同 $.ajax
扩展:真正的ajax原生,需要使用js操作,jq的ajax方法是对原生js的封装,方便咱们使用
  前后端混合项目中:

                我们通常使用jq的ajax实现 js和后端异步交互
                -jq操作dom
                -jq发ajax请求
   前后端分离项目中:

                我们会使用另一个第三方库,实现 js和后端异步交互(axios)
                -只想发送ajax请求---》只用来发ajax请求的库

# 计算小案例  -编码格式是 :urlencoded

demo.html
<body>
<input type="text" id="one">+
<input type="text" id="two">=
<input type="text" id="three">
<button class="btn">计算</button>
<script>$(".btn").click(function (){var one = $("#one").val();var two = $("#two").val();//把获得的值提交到后端$.ajax({url:'',type:'post',data:{one:one,two:two},//接收后端返回的数据success:function (res){console.log(res,)if (res.code == 100){$("#three").val(res.result)}else {alert(res.msg)}}})})
</script>
view.py
from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
def demo(request):if request.method == 'GET':return render(request,'demo.html')else:one = int(request.POST.get('one'))two = int(request.POST.get('two'))return JsonResponse({'code':100,'msg':'计算成功','result':one+two})

# 上传文件 -编码格式:form-data

demo.html
<body>
<h1>文件上传</h1>
<input type="file" id="id_file">
<button id="id_submit">上传文件</button>
<script>$("#id_submit").click(function (){var formdata = new FormData// $('#id_file')[0].files[0]formdata.append('myfile',$('#id_file')[0].files[0])//把获得的值提交到后端$.ajax({url:'',type:'post',// 指定编码,上传文件processData: false,  //默认会预处理数据,变成,one=1&two=2contentType:false,   //默认是urlencoded,不指定编码,上传文件必须要用from-datadata:formdata,//接收后端返回的数据success:function (res){console.log(res,)if (res.code == 100){alert(res.msg)}else {alert(res.msg)}}})})
</script>
</body>
views.py
def demo(request):if request.method == 'GET':return render(request,'demo.html')else:# one = int(request.POST.get('one'))# two = int(request.POST.get('two'))myfile=request.FILES.get('myfile')with open(myfile.name,'wb')as f:for line in myfile:f.write(line)return JsonResponse({'code':100,'msg':'上传成功'})

 # json格式用的多,后期

          $.ajax({url: '/demo01/',method: 'post',contentType: 'application/json',data: JSON.stringify({name: 'lqz', age: 19}), // 把对象转成字符串形式,json格式字符串success: function (data) {console.log(data)}})

连表的链接方式

数据库表的连接方式:

先总体概述一下:一般用的是join 和 union

1. 笛卡尔积:join
2. 内连接:inner join on
3. 外连接:全外连接full join on,左外连接left join on,右外连接right join on
4. 联合查询:Union Union all

用于测试的两张表:
在这里插入图片描述

1.笛卡尔积 join

两表关联,把左表的列和右表的列通过笛卡尔积的形式表达出来。

select * from t1 join t2

在这里插入图片描述

2.内连接 inner join on

两表关联,保留两表中交集的记录。

select * from t1 inner join t2 on t1.id = t2.id;

在这里插入图片描述

3. 全外连接 full join on

两表关联,两表的内容均保留,没有关联的字段用null表示。
oracle里面有full join,但是在mysql中没有full join。我们可以使用union来达到目的。

select * from t1 full join t2 on t1.id = t2.id
或select * from t1 left join t2 on t1.id = t2.idunionselect * from t1 right join t2 on t1.id = t2.id;

在这里插入图片描述

3.1 左外连接left join on

两表关联,左表全部保留,右表关联不上用null表示。

select * from t1 left join t2 on t1.id = t2.id

在这里插入图片描述

3.2 右外连接right join on

两表关联,右表全部保留,左表关联不上用null表示。

select * from t1 right join t2 on t1.id = t2.id

在这里插入图片描述

4. 联合查询

用于测试的两张表:
在这里插入图片描述

4.1 Union

查询两张表中的文章 id 号及标题,并去掉重复记录:

select aid,title from article union select bid,title from blog

在这里插入图片描述

4.2 Union all

查询两张表中的文章 id 号及标题,并返回所有记录:

select aid,title from article union all select bid,title from blog

在这里插入图片描述

ajax登录和注册案例

# 注册功能(邮箱和用户名头像)
    1、注册使用ajax注册,能够上传头像,上传的头像保存到media文件夹下
    2、浏览器中能访问
    3、用户名不能重复:ajax,输入框光标失去焦点,就去后端校验用户名是否存在,如果存在,把输入框情况,并弹出alert 说用户名不能重复

    $('#id_json').blur(function(){$("#three").val('')alert()})

 # 登录功能---》ajax登录
        既可以用邮箱登录,又可以用用户名登录

今日思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/210319.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年个人工作总结怎么写?工作任务完成自动记录的待办软件

2023年已经接近尾声&#xff0c;不少人已经开始期待新的一年到来了。不过对于大多数职场人士来说&#xff0c;最近还有一项让人头疼的任务需要完成&#xff0c;这就是撰写2023年个人工作总结。 那么年度个人工作总结怎么写呢&#xff1f;其实很简单&#xff0c;年度工作总结一…

直面多云困境,聊聊F5分布式云的破局之道

在数字化浪潮的大背景下&#xff0c;我们迎来了一个万物上云的时代。Gartner的调查数据显示&#xff0c;81%的公有云用户选择两个或两个以上的云服务供应商。对企业来说&#xff0c;充分利用多云网络可以实现业务的成功转型和增长。然而机遇与挑战并存&#xff0c;本文从多云网…

LeetCode | 110. 平衡二叉树

LeetCode | 110. 平衡二叉树 OJ链接 首先计算出二叉树的高度然后计算当前节点的左右子树的高度&#xff0c;然后判断当前节点的左右子树高度差是否超过 1&#xff0c;最后递归地检查左右子树是否也是平衡的。 //计算二叉树的高度 int height(struct TreeNode* root) {if(root…

[读论文]BK-SDM: A Lightweight, Fast, and Cheap Version of Stable Diffusion

github: GitHub - Nota-NetsPresso/BK-SDM: A Compressed Stable Diffusion for Efficient Text-to-Image Generation [ICCV23 Demo] [ICML23 Workshop] ICML 2023 Workshop on ES-FoMo 简化方式 蒸馏方式&#xff08;训练Task蒸馏outKD-FeatKD&#xff09; 训练数据集 评测指标…

介绍几种Go语言开发的IDE

文章目录 1.前言2.几种ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.总结写在最后 1.前言 Go语言作为一种新兴的编程语言&#xff0c;近年来受到了越来越多的关注。 它以其简洁、高效和并发性能而闻名&#xff0c;被广…

Ubuntu 安装 CUDA 和 cuDNN 详细步骤

我的Linux系统背景&#xff1a; 系统和驱动都已安装。 系统是centos 8。查看自己操作系统的版本信息&#xff1a;cat /etc/issue或者是 cat /etc/lsb-release 用nvidia-smi可以看到显卡驱动和可支持的最高cuda版本&#xff0c;我的是12.2。驱动版本是535.129.03 首先&#…

SpringBoot 集成 ChatGPT,实战附源码

1 前言 在本文中&#xff0c;我们将探索在 Spring Boot 应用程序中调用 OpenAI ChatGPT API 的过程。我们的目标是开发一个 Spring Boot 应用程序&#xff0c;能够利用 OpenAI ChatGPT API 生成对给定提示的响应。 您可能熟悉 ChatGPT 中的术语“提示”。在 ChatGPT 或类似语…

013 OpenCV copyMakeBorder(padding)

目录 一、环境 二、原理 三、完整代码 一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、原理 cv.copyMakeBorder是OpenCV库中的一个函数&#xff0c;用于在图像周围添加边框&#xff08;padding&#xff09;。这个函数可以用于图…

WPF窗口样式的比较

WPF窗口样式的比较 1.WPF默认Window窗口 带有图标 标题栏 最小最大化推出按钮 <Window x:Class"GlowWindowDemo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006…

TCP/IP的体系结构

目录 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器方式 一、TCP/IP的体系结构 二、TCP/IP四层协议的表示方法举例 三、现在因特网使用的TCP/IP体系结构 四、互联网应用层的客户——服务器…

【C++11(一)】右值引用以及列表初始化

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; C11 1. 前言2. 统一的列表初始化3. initializer…

基于单片机远程温控检测系统

**单片机设计介绍&#xff0c;基于单片机远程温控检测系统&#xff08;含上位机&#xff09; 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的远程温控检测系统可以用于远程监测和控制温度&#xff0c;实现远程温度监…

城市NOA加速落地,景联文科技高质量数据标注助力感知系统升级

当前&#xff0c;自动驾驶技术的演进正在经历着从基础L2到L3过渡的重要阶段&#xff0c;其中NOA&#xff08;自动辅助导航驾驶&#xff09;扮演着至关重要的角色。城市NOA&#xff08;L2.9&#xff09;作为城市场景下的NOA&#xff0c;被看作是车企向更高阶自动驾驶迈进的必经之…

计算机基础知识61

JsonResponse 功能例子 你自己写一个类&#xff0c;实现JsonResponse 功能&#xff0c;不需要传safeFalse&#xff0c;无论字典或列表&#xff0c;都能完成序列化返回给前端 1 响应头例子 四种情况&#xff0c;在响应头返回数据 xxxx # 第一种情况 JsonResponse def show(req…

Python调用腾讯云短信服务发送手机短信

文章目录 1、准备工作2、代码实现3、拓展4、闲聊关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 1、准备工作 p…

身份统一管理创新与优化 ——华为云OneAccess应用身份管理服务的2023年

2023年&#xff0c;随着云计算、物联网、人工智能等技术的快速发展&#xff0c;企业面临着数字化转型的巨大挑战与机遇。身份统一管理是企业数字化转型的基础&#xff0c;也是业务发展的关键。如何高效、安全、灵活地实现身份统一管理&#xff0c;成为企业亟待解决的首要课题。…

硬盘分区丢失?这样轻松恢复!

​“在我安装操作系统的过程中&#xff0c;我先把C盘&#xff08;100G&#xff09;进行了格式化&#xff0c;而我的D盘大小为297G&#xff0c;然而在Win PE中&#xff0c;所显示的仅是247G&#xff08;CD盘总容量&#xff09;&#xff0c;这247G是空无一物的。让我感到困惑的是…

D7292 双向直流电机驱动电路 ( 速度可控 ) 7V~20V 400mA,峰值电流可达1.2A 采用DIP8、SOP8的封装形式

D7292是一块带有制动和速度控制功能的双向直流电机单片电路。它可以用来驱动CDP、VCR 和 TOY等负载。该电路通过两个逻辑输入管脚的电压&#xff0c;可以控制电机正反 个方向转动以及制动。并且可以通过改变速度控制管脚的电压&#xff0c;从而方便的改变电机的速度。D7292采用…

前端项目中CDN的一些问题【性能优化篇】

1. CDN的概念 CDN&#xff08;Content Delivery NetWork&#xff0c;内容分发网络&#xff09;&#xff0c;是指利用最靠近每位用户的服务区&#xff0c;更快的将资源发送给用户。 提高用户的访问速度减轻服务器压力提高网站的稳定性和安全性 2. CDN的作用 CDN一般用来托管…

WPF绘制进度条(弧形,圆形,异形)

前言 WPF里面圆形进度条实现还比较麻烦,主要涉及到的就是动态绘制进度条的进度需要用到简单的数学算法。其实原理比较简单,我们需要的是话两条重叠的弧线,里面的弧线要比里面的弧线要宽,这样简单的雏形就出来了。 基础写法 我们可以用Path来绘制弧线,代码如下: <Gr…