计算机基础知识64

news2024/11/18 13:29:46

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=2
            contentType:false,   //默认是urlencoded,不指定编码,上传文件必须要用from-data
            data: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.id
    union
    select * 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.coloradmin.cn/o/1283340.html

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

相关文章

【数据分享】2015-2023年我国区县逐月二手房房价数据(Excel/Shp格式)

房价是一个城市发展程度的重要体现&#xff0c;一个城市的房价越高通常代表这个城市越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01;之前我们分享过2015-2023年我国地级市逐月房价数据&#x…

关于你对 Zookeeper 的理解

看看普通人和高手是如何回答这个问题的&#xff1f; 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

【ArcGIS Pro微课1000例】0047:深度学习--棕榈树提取全流程

一、创建训练样本 对汤加科洛瓦伊种植园每棵棕榈树的健康状况进行清查和评估,这需要花费大量的时间和劳动力。 为简化此过程,将在 ArcGIS Pro 中使用深度学习模型来识别树木,然后根据植被绿度的测量值计算其健康状况。 第一步是找到显示汤加科洛瓦伊的影像,该影像具有足够…

VQD视频质量诊断服务/图像质量诊断/视频流质量诊断/传统方法与深度学习结合的视频质量诊断

随着平安城市、大安防的发展&#xff0c;监控摄像机数量的不断增加&#xff0c;给监控系统的维护工作带来了新的挑战。如何及时了解前端视频设备的运行情况&#xff0c;发现故障并检测恶意遮挡与破坏的不法行为已成为视频监控系统运行的首要迫切问题。对于成千上万个监控摄像机…

Vue3 组合式实现 带连接线的Tree型 架构图(一级树形图)

创建组件名称 TreeNodeView.vue <template><div class"tree-node"><div class"node">{{ rootNodeName }}</div><div class"children" :style"childrenLineStyle"><div class"child-node"…

练习十一:简单卷积器的设计

简单卷积器的设计 1&#xff0c;任务目的&#xff1a;2&#xff0c;明确设计任务2.1,目前这部分代码两个文件没找到&#xff0c;见第5、6节&#xff0c;待解决中。 &#xff0c;卷积器的设计&#xff0c;RTL&#xff1a;con1.v4&#xff0c;前仿真和后仿真&#xff0c;测试信号…

一键自动修改和翻新OC源码,解决苹果审核4.3和马甲问题

ipaguard 自动修改/翻新/混淆/OC/iOS代码&#xff0c;自动替换类名&#xff0c;方法名 由来 网上有很多关于如何混淆iOS源码的方法&#xff0c;但是都不够智能&#xff0c;生成的方法类名要么千奇百怪&#xff0c;要么aaaabbbxxx这种完全毫无意义的名称&#xff0c;要么只能…

全网最新最全的自动化测试:python+pytest接口自动化-接口测试基础

接口定义 一般我们所说的接口即API&#xff0c;那什么又是API呢&#xff0c;百度给的定义如下&#xff1a; API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的接口&#xff08;如函数、HTTP接口&#xff09;&#xff0c…

TEMU跨境平台与亚马逊检测认证几大认证您知道多少?

TEMU跨境平台与亚马逊检测认证几大认证您知道多少&#xff1f; TEMU跨境平台与亚马逊对于做外贸的人应该都不陌生,可是你是否知道产品入驻TEMU跨境平台与亚马逊需要办理的13大认证呢?如果你不知道,请认真阅读正面的内容,因为它关系着你的产品能否在TEMU跨境平台与亚马逊顺利上…

零基础学编程,中文编程工具构件之弹出菜单构件教程,中文编程工具下载

一、前言&#xff1a; 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具&#xff0c;零基础…

二进制动态插桩工具intel PIN的学习笔记

前言 最近两周为了课程汇报学习了intel PIN这个动态插桩&#xff08;dynamic instrument&#xff09;工具&#xff0c;总体的学习感受还是挺累的。一方面&#xff0c;这个方向比较小众&#xff0c;相关的二手资料比较少&#xff0c;能参考的也就只有官方手册这种一手资料&…

12.4c++中的继承

#include <iostream>using namespace std;class Sofa { private:string way;int *score; public:Sofa(){}//有参构造函数Sofa(string way,int score):way(way),score(new int(score)){cout << "Sofa::有参构造函数" << endl;}//拷贝构造函数Sofa(c…

从声纹模型到语音合成:音频处理 AI 技术前沿 | 开源专题 No.45

facebookresearch/audiocraft Stars: 16.6k License: MIT AudioCraft 是一个用于音频生成的 PyTorch 库。它包含了两个最先进的 AI 生成模型 (AudioGen 和 MusicGen) 的推理和训练代码&#xff0c;可以产生高质量音频。该项目还提供了其他功能&#xff1a; MusicGen&#xf…

12月4日作业

完成沙发床的多继承 #include <iostream>using namespace std;class Bed { private:string sleeping; public:double *price; public:Bed(){cout << "Bed::无参构造函数" << endl;}Bed(string sleeping,int price):sleeping(sleeping),price(new …

前缀和例题:子矩阵的和AcWing796-Java版

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…

SAP系统邮件功能配置 SCOT <转载>

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/71594578 相信SAP顾问或多或少都会接到用户要求SAP系统能够定时发送邮件的功能&#xff0c;定时将用户需要的信息已邮件的方式发送给固定的人员。 下面就来讲一下SAP发送邮件应该如何配置&#xff1a; 1、RZ10做配置&#…

掌握排序的艺术:Python中sorted()函数全面解析!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 1. 引言 排序在编程中是一个基本且重要的操作&#xff0c;而 Python 中的 sorted() 函数则为我们提供了强大的排序能力。在本篇文章中&#xff0c;我们将深入研究不同排序算法、sorted() 函数的灵活性&#xff…

基于腾讯云手把手教你搭建网站

目录 前言前期准备工作具体搭建网站番外篇&#xff1a;网站开发及优化结束语 前言 在当今数字化时代浪潮之下&#xff0c;作为开发者拥有一个属于自己的网站是非常有必要的&#xff0c;也是展示个人形象、打造影响力和给别人提供服务的重要途径。网站不仅可以作为打造自己影响…

Rpg游戏地形生成

rpg游戏中的地形一般使用高度图的形式来绘制。写了几个随机生成高度图的算法。 最常见的是基于分形算法生成高度图&#xff0c;网上有很多资料&#xff0c;这里不再介绍。 一种生成断层效果高度图的算法 //!生成断层效果的高度图 void TerrainData::FillFaultSurface(float …

12.4作业

#include <iostream>using namespace std;class Sofa { private:string sit;int *nub; public:Sofa(){cout << "Sofa::无参构造函数" << endl;}Sofa(string sit,int nub):sit(sit),nub(new int(nub)){cout << "Sofa::有参构造函数"…