计算机基础知识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)}})

cookie

# 存在浏览器上的键值对,就是cookie
cookie哪里来的?

   服务端返回的--》放在响应头的cookie中---》浏览器会自动取出来--》放到cookie中
   再次向cookie所在的域发送请求,它会自动携带当时存的cookie
 
# 存在于服务端的键值对,称之为session
    {'11111':{name:lqz},'22222':{name:zs}}

连表的链接方式

数据库表的连接方式:

先总体概述一下:一般用的是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.mzph.cn/news/197885.shtml

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

相关文章

最长连续序列(leetcode 128)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;排序方法二&#xff1a;哈希表 5.实现示例参考文献 1.问题描述 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你…

【华为OD题库-049】评论转换输出-java

题目 在一个博客网站上&#xff0c;每篇博客都有评论。每一条评论都是一个非空英文字母字符串。评论具有树状结构&#xff0c;除了根评论外&#xff0c;每个评论都有一个父评论。 当评论保存时&#xff0c;使用以下格式: 首先是评论的内容; 然后是回复当前评论的数量。 最后是当…

如何保持操纵机构丝杆的精度?

滚珠丝杆是操纵机构中的重要组成部分&#xff0c;可以传递较高的扭矩&#xff0c;并且具有低摩擦、高效率和快速响应的特性&#xff0c;这使得操纵机构能够实现高速、高精度的运动控制&#xff0c;这对于整个系统的性能和精度具有决定性的影响&#xff0c;保持操纵机构丝杆的精…

互联网Java工程师面试题·Spring Boot篇·第二弹

目录 8、什么是 YAML&#xff1f; 9、如何实现 Spring Boot 应用程序的安全性&#xff1f; 10、如何集成 Spring Boot 和 ActiveMQ&#xff1f; 11、如何使用 Spring Boot 实现分页和排序&#xff1f; 12、什么是 Swagger&#xff1f;你用 Spring Boot 实现了它吗&#xff1f; …

YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…

【wvp】测试记录

ffmpeg 这是个莫名其妙的报错&#xff0c;通过排查&#xff0c;应该是zlm哪个进程引起的 会议室的性能 网络IO也就20M

全志T527设置gpio口输出高电平实际输出低电平

前言 在调试T527的时候&#xff0c;主板另外添加了gpio口去控制usb口的电源开关&#xff0c;软件上面需要在内核运行的时候将gpio口设置输出高电平&#xff0c;usb口才可以正常使用。改好系统固件后&#xff0c;升级发现&#xff0c;机器开机动画过程中可以控制gpio口去打开us…

ArkUI组件--Button组件

1.声明Button组件 Button(label?:ResourceStr) #label是按钮上显示的文本 ①label是文字类型 所写文字会在按钮上显示 ②不输入label内容&#xff0c;需要额外定义一些描述。例如插入图片&#xff08;需要定义图片属性&#xff09; Button(){Image($r(app.media.xxx)).wi…

【题目】栈和队列专题

文章目录 专题一&#xff1a;栈系列1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09;2. 有效的括号3. 用栈实现队列4. 最小栈 专题一&#xff1a;栈系列 1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09; 算法原理 2. 有效的括号 题目链接 算法原理 代…

SpringBoot-监听Nacos动态修改日志级别

目录 一、pom文件 二、项目配置文件 三、日志配置文件 四、日志监听类 五、日志动态修改服务类 线上系统的日志级别一般都是 INFO 级别&#xff0c;有时候需要查看 WARN 级别的日志&#xff0c;所以需要动态修改日志级别。微服务项目中使用 Nacos 作为注册中心&#xff0c…

C++面试宝典第2题:逆序输出整数

题目 写一个方法&#xff0c;将一个整数逆序打印输出到控制台。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如&#xff1a;123的逆序输出为321&#xff0c;8600的逆序输出为68&#xff0c;-609的逆序输出为-906。 解析 这道题本身并没有什么…

Java架构师技术架构路线

目录 1 概论2 如何规划短中长期的技术架构路线图3 如何规划面向未来的架构4 如何修订路线图执行过程中的偏差5 如何落地路线图-阿里系糙快猛之下的敏捷模式想学习架构师构建流程请跳转:Java架构师系统架构设计 1 概论 首先,规划一个短中长期的技术路线图是非常重要的。短中…

java SSM毕业生信息管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

前言 学校的规模不断扩大&#xff0c;学生数量急剧增加&#xff0c;有关学生的各种信息量也成倍增长。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等&#xff0c;从而减少管…

lv11 嵌入式开发 RTC 17

目录 1 RTC简介 ​编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…

关于优雅的使用SQL多行转多列的记录(doris)

文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组&#xff0c;加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景 准备的数据是这样的&#xff1a; 需要将每个人的成绩显示在一行上&#xff0c;需要的结果如下&#xff0c;但是我的情况是课程有非常…

联想LJ2655DN激光打印机清零方法

随着打印机的使用越来越频繁&#xff0c;需要更换耗材的时候也越来越多&#xff1b;但是更换上新的耗材后&#xff0c;很多用户都会遇到一个问题&#xff0c;就是更换完新的耗材后打印机仍然提示寿命将近&#xff0c;或者无墨粉盒灯情况&#xff0c;这个时候就需要我们对打印机…

qt 5.15.2 主窗体事件及绘制功能

qt 5.15.2 主窗体事件及绘制功能 显示主窗体效果图如下所示&#xff1a; main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.setFixedWidth(600);w.setFixedHeight(6…

Nat easy IP ACL

0表示匹配&#xff0c;1表示任意&#xff08;主机位0.0.0.255&#xff08;255主机位&#xff09;&#xff09; rule deny source 192.168.2.1 0 设置拒绝192.168.2.1的主机通过 记住将其应用到接口上 [AR2]acl 2000 //创建基本ACL [AR2-acl-basic-2000]rule deny source 192…

Fiddler的配置、原理和使用

一、Fiddler的工作原理 本地应用与服务器之间所有的请求&#xff08;request&#xff09;和响应&#xff08;response&#xff09;&#xff0c;由fiddler进行转发&#xff0c;此时fiddler以代理服务器的方式存在。 由于所有的网络数据都要经过fiddler&#xff0c;因此&#xf…

014 OpenCV canny边缘检测

一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、canny原理 OpenCV中的Canny边缘检测算法是一种基于图像处理的计算机视觉技术&#xff0c;主要用于检测图像中的边缘。Canny边缘检测算法的原理是通过计算图像中像素点之间的梯度值来…