计算机基础知识56

choices参数的使用

# 应用场景:
        学历:小学、初中、高中、本科、硕士、博士、1 2 3 4 5 6
        客户来源:  微信渠道、广告、介绍、QQ、等等    
        性别:男、女、未知

# 对于以上可能被我们列举完的字段我们一般都是选择使用choices参来做

class UserInfo(models.Model):
    username = models.CharField(max_length=64)
    password = models.CharField(max_length=32)
    # 先写一个映射关系
    gender_choices = (
        (1, '男'),
        (2, '女'),
        (3, '未知'),
    )
    """字段存储的范围还是取决于数据类型的字段"""
    gender = models.SmallIntegerField(choices=gender_choices) # 男 女 未知 1 2 3 4
    

取值:print(res.get_score_display())

    # score A:优秀 B:良好 C:及格 D:不及格
    score_choices=(
        ('A', '优秀'),
        ('B', '良好'),
        ('C', '及格'),
        ('D', '不及格'),)
    score = models.CharField(choices=score_choices,max_length=32, null=True)
    print(res.gender) # 1
    # get_字段名_display()
    # 如果你存储的数据没有在映射范围内,就原样输出,如果有,就显示对应的关系对应的数据
    print(res.get_score_display())

MVC和MTV的模式

MVC

# MVC是Web开发领域中的一种著名的软件架构模式,把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起

M:Model模型负责业务对象与数据库的映射(ORM),用于数据库打交道
V:view视图负责与用户的交互(html页面)
C:Controller控制器接受用户的输入调用模型和视图完成用户的请求

# MVC的软件架构模式具有有耦合性低、重用性高、生命周期成本低等优点,主要用于web框架,常用的开发语言,有java,php,node.js等等。

MVC

# MTV模式拆分的三部分为:Model(模型)、Template(模板)和View(视图),MTV模式与MVC本质上都是一样的,都是为了各组件保持松耦合关系。此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理

Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template

多对多的三种创建方式

方式一:通过ManyToManyField自动创建第三张表:    # 全自动

class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name="书名")
	
# 通过ORM自带的ManyToManyField自动创建第三张表
class Author(models.Model):
    name = models.CharField(max_length=32, verbose_name="作者姓名")
    books = models.ManyToManyField(to="Book", related_name="authors")

# 优势:自动帮我们创建表,而且还是使用那四个方法:add  set  remove  clear
# 缺点:扩展性非常差

方式二:自行创建第三张表:       # 全手动

# 自己创建第三张表,分别通过外键关联书和作者
class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name="书名")
class Author(models.Model):
    name = models.CharField(max_length=32, verbose_name="作者姓名")

# 自己创建第三张表,分别通过外键关联书和作者
class Author2Book(models.Model):
    author = models.ForeignKey(to="Author")
    book = models.ForeignKey(to="Book")
    register_time=''

# 优势:可扩展性很高

# 缺点:不能使用orm查询方法了,那四个方法也不用用了add set remoce clear 都不能用了

方式三:设置ManyTomanyField并指定自行创建的第三张表    # 半自动

class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name="书名")
# 自己创建第三张表,并通过ManyToManyField指定关联
class Author(models.Model):
    name = models.CharField(max_length=32, verbose_name="作者姓名")
    books = models.ManyToManyField(to="Book", through="Author2Book", through_fields=("author", "book"))
    # through_fields接受一个2元组('field1','field2'):
    # 其中field1是定义ManyToManyField的模型外键的名(author),field2是关联目标模型(book)的外键名。

class Author2Book(models.Model):
    author = models.ForeignKey(to="Author")
    book = models.ForeignKey(to="Book")

# 优点:还可以使用orm的方法及正反向查询,

# 缺点:不能使用add set remove clear方法了

""" 推荐使用另外两种方式,全自动额不太建议 """

Ajax技术

# Ajax:就是一种前端技术,用于朝着后端程序发送请求和数据

# AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。
            即使用Javascript语言服务器进行异步交互,传输的数据为XML
            当然,传输的数据不只是XML,现在更多使用json数据。

总结下来,前端向后端发送请求的方式无非以下几种,ajax技术便是其中一种
1、浏览器地址栏输入url地址
	请求方式默认并且只能是:get请求
2、a标签
	请求方式默认并且只能是:get请求
3、form表单
	请求方式可以是:get与post请求
4、ajax技术
	请求方式可以是:get与post请求    

# AJAX除了异步的特点外,还有一个就是:浏览器页面局部刷新

  1. 异步提交
  2. 局部刷新

  例如:我们可以尝试一下博客园的注册页面,那些局部刷新的部分背后都是ajax请求

# 直接学习jQuery版本的,帮我们封装了,如果不封装,js版本的Ajax非常复杂

document.getElementById('d1').innerHTML = xmlhttp.responseText;
document.getElementByClssName('c1').innerHTML = xmlhttp.responseText;
document.getElementById('d1').innerHTML = xmlhttp.responseText;
document.querySelector('#d1 a ').innerHTML = xmlhttp.responseText;
document.querySelector('.c1').innerHTML = xmlhttp.responseText;
document.querySelector('h1').innerHTML = xmlhttp.responseText;

ajax的案例

ab_ajax.html  前端
<body>
<input type="text" id="inp1">+
<input type="text" id="inp2">=
<input type="text" id="inp3">
<button class="btn">提交</button>
<script>
    $(".btn").click(function () {
        var inp1 = $("#inp1").val();
        var inp2 = $("#inp2").val();

        // 把获取到的两个值提交到后端
        $.ajax({
            url:'',    //默认不写,就是朝当前地址传递
            type:'post',
            dataType:'json',
            data:{inp1:inp1,inp2:inp2},
            //回调函数用来接收后端返回的数据
            success:function (res) {
                console.log(res,)  //就是拿后端返回的数据
                $("#inp3").val(res);
                // {"username":"kevin","password":123}

                //反序列化
                {#res = JSON.stringify()#}
                // 后端返回的数据别忘了反序列化
{#                res = JSON.parse(res)   //反序列化#}
{#                console.log(res,typeof res)#}
{#                console.log(res.username)#}
                {#console.log(res.password)#}
            }
        })
    })
</script>
</body>
views.py   后端
def ab_ajax(request):
    if request.method=='POST':
        # 接受ajax提交过来的数据
        print(request.POST)
        d1 = request.POST.get('inp1')
        d2 = request.POST.get('inp2')
        d3 = int(d1) + int(d2)
        # 序列化
        import json
        return HttpResponse(json.dumps(d3))
        # user_dict = {"username":"kevin","password":123}
        # return HttpResponse(json.dumps(user_dict))
    return render(request,'ab_ajax.html')

今日思维导图:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统(三)| 进程管理上 进程状态 同步 互斥

目录 1 进程和程序区别 2 进程状态 2.1 进程的5种基本状态 2.2 进程状态之间转换 2.3 七状态模型 3 进程描述 3.1 进程控制块 PCB 3.2 进程块组织方式 4 进程控制 5 进程同步 互斥 5.1 区分进程互斥和同步 5.2 核心方案 5.3 其他方案 方案1 设置锁变量 方案2 严…

Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)

Mybatis Plus分页实现逻辑整理&#xff08;结合芋道整合进行解析&#xff09; 我希望如春天般的你&#xff0c;身着白色的婚纱&#xff0c;向我奔赴而来&#xff0c;我愿意用全世界最温情的目光&#xff0c;朝着你的方向望去——姗姗来迟。 1.背景介绍 https://baomidou.com/p…

selenium下载安装对应的chromedriver并执行

文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库&#xff0c;它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c…

【机器学习】033_反向传播

一、计算图、反向传播原理 1. 回顾前向传播 例&#xff1a;假设现在有一个神经网络&#xff0c;其仅有一个输出层和一个神经单元 定义 定义 &#xff0c;即激活函数对激活值不再做具体处理 定义平方损失函数 &#xff0c;计算a的值与真实值的差距 此时&#xff0c;通过计算…

032.Python面向对象_类补充_描述器

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

java: 无效的目标发行版: 17 问题解决

今天在写完类点击运行后显示java: 无效的目标发行版: 17 网上查询了一番&#xff0c;发现有几个地方需要注意。 还有一个就是设置中&#xff0c;下面的就是我本次问题所在&#xff0c;不知道为什么&#xff0c;他自动添加了下面的东西 一个方法是把目标字节码版本改为正确的&a…

跳台阶游戏(Python排列组合函数itertools.combinations的应用)

给定台阶总数和两种单次可跳级数&#xff0c;编写自定义函数&#xff0c;计算所有的游戏组合方案数量。 (笔记模板由python脚本于2023年11月19日 19:18:48创建&#xff0c;本篇笔记适合熟悉python自定义函数编写&#xff0c;了解排列组合知识的coder翻阅) 【学习的细节是欢悦的…

mysql 查询

-- 多表查询select * from tb_dept,tb_emp; 内来链接 -- 内连接 -- A 查询员工的姓名 &#xff0c; 及所属的部门名称 &#xff08;隐式内连接实现&#xff09;select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.idtb_emp.id;-- 推荐使用select a.name,b.n…

VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)

目录 一、服务器信息二、192.168.132.35服务器上安装mysql&#xff08;主&#xff09;2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 三…

电脑显示msvcp140_1.dll丢失的5个常用解决方法,亲测可修复

常见于计算机操作中的"msvcp140_1.dll丢失"错误警示&#xff0c;往往令部分应用程序无法正常启动。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的文件。本文将介绍6个解决msvcp140_1.dll丢失的方法&#xff0c;帮助大家快速恢复计算机的正常运行。 …

Week-T10 数据增强

文章目录 一、准备环境和数据1.环境2. 数据 二、数据增强&#xff08;增加数据集中样本的多样性&#xff09;三、将增强后的数据添加到模型中四、开始训练五、自定义增强函数六、一些增强函数 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f…

我在CSDN开组会1-蒙特卡洛模拟在矿床学的应用展望

各位老师、同学们&#xff0c;大家好。今天组会的内容是蒙特卡洛模拟在矿床学的应用展望。 为什么要讲蒙特卡洛模拟呢&#xff0c;因为我发现在地质学方面已经有不少应用&#xff0c;但是蒙特卡洛模拟延伸的知识太晦涩了&#xff0c;劝退了很多探究者们。因此&#xff0c;计划…

Django批量插入数据及分页器

文章目录 一、批量插入数据二、分页1.分页器的思路2.用一个案例试试3.自定义分页器 一、批量插入数据 当我们需要大批量创建数据的时候&#xff0c;如果一条一条的去创建或许需要猴年马月 我们可以先试一试for循环试试 我们首先建立一个模型类来创建一个表 models.py&#xff…

有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的 有依次对应关系的数组X、Y、Z&#xff0c;排序其中一个X数组&#xff0c;使得另外的数组还与排序完成后的数组相对应&#xff0c;并打印出排序完成后的X、Y、Z数组。 2. 具体实现 以下面的这个对应关系为例&#xff0c;进行相应编程实现。 X [3.7,7.7,-6.6,1.5,-4.5…

腾讯云HAI域AI作画

目录 &#x1f433;前言&#xff1a; &#x1f680;了解高性能应用服务 HAI &#x1f47b;即插即用 轻松上手 &#x1f47b;横向对比 青出于蓝 &#x1f424;应用场景-AI作画 &#x1f424;应用场景-AI对话 &#x1f424;应用场景-算法研发 &#x1f680;使用HAI进行…

ChatGPT暂时停止开通plus,可能迎来封号高峰期

前言: 前两日,chat gpt的创始人 San Altman在网上发表了,由于注册的使用量超过了他们的承受能力,为了确保每个人的良好使用体验,chat gpt将暂时停止开通gpt plus。 情况: 前段时间好像出现了官网崩溃的情况,就连api key都受到了影响,所以现在就开始了暂时停止plus的注…

【数据结构】栈详解

目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…

苍穹外卖—解决前端时间属性显示问题

项目场景&#xff1a; 点击员工管理 出现显示时间属性问题 输入员工姓名为zhangsan 现实的时间属性是数组类型 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 例如&#xff1a;数据传输过程中数据不时出现丢失的情况&#xff0c;偶尔会丢失一部分数据 APP …

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers

手把手带你在AutoDL上部署InternLM-Chat-7B Transformers 调用 项目地址&#xff1a;https://github.com/KMnO4-zx/self_llm.git 如果大家有其他模型想要部署教程&#xff0c;可以来仓库提交issue哦~ 也可以自己提交PR&#xff01; InternLM-Chat-7B Transformers 部署调用 环…

【代数学习题4.2】从零理解范数与迹 —— 求数域元素的范数与迹

从零理解范数与迹 —— 求数域元素的范数与迹 写在最前面题目解答 2. 范数 N N N思路求解过程python求解 3. 数域 K K K 的范数 N K N_K NK​思路求解过程Python求解分析解题步骤 4. 迹 T T T求解过程共轭元素计算迹 python求解分析解题步骤 5. 数域 K K K 的迹 T K T_K …