首页 > 其他分享 >周总结

周总结

时间:2022-12-11 23:24:01浏览次数:47  
标签:总结 jQuery 对象 标签 元素 django js

目录

周总结12/11

前端之JavaScript

什么是JavaScript?

前身是ECMAScript,一个完整的JavaCript主要由3个不同部分组成的:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

JavaSript是一个脚本语言,是一种可插入HTML页面的编程代码。

JS基础

1.注释语法
单行注释   //
多行注释   /**/
2.引入js的多种方式
	1.head内script标签内编写
	2.head内script标签src属性引入外部js资源
	3.body内最底部通过script标签属性外部js资源(最常用)
3.结束符号
	分号;
	
4.变量名命名规则
	1.可以使用——,数字,字母,$组成
	2.变量名是区分大小写的
	3.推荐使用驼峰式命名规则
	4.关键字不能作为变量名
	5.要用关键字声明var/let,
	
5.常量
	python真正的意义上的常量是默认全大写
	js是有真正意义的常量,需要关键字声明:const
	

js基本数据类型

1.整型和浮点型统称数值类型
2.类型转换 关键字parse
	注意: NaN属于数值类型 表示的意思是你操作的对象不是一个数字
	
3.字符类型
	单引号、双引号、模板字符串`kimi`
	拼接方法推荐使用加号
	let = desc='my name is ${name} my age is ${age}'
   常用内置方法
4.布尔值(boolean)
  ''、0、null、undefined、NaN都是false
  null表示值为空,而undefined只是声明了变量,还没有赋值
  
5.对象 object
6.数组   

js运算符

1.基本运算符
	+ - * /  ++(自增)  --(自减)
2.比较运算符
	!=   ==(弱等于)   === (强等于)
3.逻辑运算符
	&&  ||  !
4.赋值运算符
	= += -+ *= /=

js流程控制

if 分支

if(条件){
	条件成立执行的代码
}

if...else

if(条件){
	条件成立执行的代码
}else {
	条件不成立执行的代码
}

if...else if...else

if (条件1){
	条件1成立执行的代码
}else if(条件2){
	条件1不成立条件2成立执行的代码
}else if(条件3){
	条件1和2不成立条件3执行的代码
}
else {
	条件1,2,3都不成立执行的代码
}

swith分支

switch(){
	case 条件1:
		条件1成立执行的代码;
		break;
		case 条件2:
		条件2成立执行的代码;
		break;
		case 条件2:
		条件2成立执行的代码;
		break;
	defualt:
		条件都不满足执行的代码
}

循环控制

for循环

for(起始条件;循环条件;条件处理){
	循环体代码
}

1.for 循环列表
for(let i=0;i<10;i++){
	console.log(i)

while循环


while循环
	while(循环条件){
        循环体代码
    }

eg:
    var i = 0;
    while (i < 10) {
      console.log(i);
      i++;
    }

三元运算

python中:   值1 if 条件 else 值2
JS中:	   条件?值1:值2

eg1:
	res = 1>2?1:3
	条件成立	取问号后面的1
	不成立		 取冒号后面的3

js函数

function 函数名(形参){
	//函数注释
	函数体代码
	return 返回值
}

1.无参数函数
	function f1(){
        console.log('hello world')
    }
    
2.带参数的函数
	function f2(a,b){
        console.log(arguments);//内置的arguments对象
        console.log(a.b);
    }
    
 3.带返回值的函数
	function sum(a,b){
        return a+b;
    }
	sum(1,2)

匿名函数

var sum=function(a,b){
    return a+b;
}
sum(1,2)

箭头函数

var f=v => v;
var f=function(v){
    return v
}

函数中的arguments参数


function add(a,b){
	console.log(a+b);
	console.log(arguments.length); 			         console.log(arguments[0]); //arguments相当于将出传入的参数全部包含,这里取得就是第一个元素1
}

add(1,2)
输出:
3
2
1

js内置函数

var d = new Date(); 
//getDate()                 获取日
//getDay ()                 获取星期
//getMonth ()               获取月(0-11)
//getFullYear ()            获取完整年份
//getYear ()                获取年
//getHours ()               获取小时
//getMinutes ()             获取分钟
//getSeconds ()             获取秒
//getMilliseconds ()        获取毫秒
//getTime ()                返回累计毫秒数(从1970/1/1午夜)

let dd = {name: 'jason', age: 18}
JSON.stringify(dd)	序列化
JSON.parse(ss)	   反序列化

定义正则两种方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
1.全局模式的规律
	lastIndex
2.test匹配数据不传默认传undefined               

前端之BOM、DOM操作

BOM操作

BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。

window对象

window.innerHeight
window.innerWidh
window.open()  打开新的窗口
window.close()  关闭新的窗口

navigator对象

navigator.appName    
navigator.appVersion
navigator.userAgent
navigator.platform

screen对象

screen.availWidth
screen.availHeight

history对象

window.history.forward()
window.history.back()

location对象

window.location.href    获取当前URL网址
window.location.herf=''  //跳转到指定的页面
window.location.reload()  重新加载页面

弹出框

警告框

alert()

确认框

confirm()

提示框

prompt()

计时相关

1.setTimenout()

计时关键字
setTimeout()
var t = setTimeout("JS语句",毫秒)
取消计时事件
clearTimeout()

2.setInterval()

 s = setInterval(func, 3000)		// 每隔3000毫秒执行一次
 clearInterval(s)  // 取消任务

DOM操作

DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。

DOM标准规定HTML文档中的每个成分都是一个节点(node):
    文档节点(document对象):代表整个文档
    元素节点(element 对象):代表一个元素(标签)
    文本节点(text对象):代表元素(标签)中的文本
    属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    注释是注释节点(comment对象) 

查找标签

1.直接查找
document.getElementById('id')  //根据ID获取一个标签
document.getElementsByClassName('c1') //根据class属性获取,结果是数组里面含有多个标签对象
document.getElementsByTagName('span')  //根据标签名获取标签合集,结果是数组里面含有多个标签对象
document.getElementsByTagName('span')[索引值]  //索引取值
2.间接查找
parentElement             父节点标签元素
children                 所有子标签
firstElementChild        	第一个子标签元素
lastElementChild         	最后一个子标签元素
nextElementSibling       	下一个兄弟标签元素
previousElementSibling   	  上一个兄弟标签元素

操作节点

1.js代码创建一个标签
	let somenode = document.createElement('a')
2.添加节点
    somenode.appendChild(newnode);//添加在后面的节点
    somenode.insertBefore(newnode,某个节点); // 添加在某个节点后面
3.删除节点
	somenode.removeChild(要删除的节点);
4.替换节点
	somenode.replaceChild(newnode, 某个节点);
5.属性节点
	//获取文本节点的值
    var divEle = document.getElementById("d1")
    divEle.innerText
    divEle.innerHTML
    //设置文本节点的值
    var divEle = document.getElementById("d1")
    divEle.innerText="1"
    divEle.innerHTML="<p>2</p>"
    //attribute操作
    var divEle = document.getElementById("d1");
    divEle.setAttribute("age","18") //兼容默认属性和自定义属性
    divEle.getAttribute("age")
    divEle.removeAttribute("age")
    // 自带的属性还可以直接.属性名来获取和设置
    imgEle.src
    imgEle.src="..."

innerText与innerHTML的区别

.innerText  		 获取标签内部所有的文本内容
.innerText = '文本'  替换/设置标签内部的文本(不识别标签语法)

.innerHTML			获取标签内部所有的标签包含文本
.innerHTML = '文本'  替换/设置标签内部的文本(识别标签语法)

获取值操作

1.针对用户输入的和用户选择的标签
	标签对象.value
2.针对用户上传的文件数据(需要索引取值)
	标签对象.files    	fileList  [文件对象、文件对象、文件对象]
	标签对象.files[0]	 文件对象 
    注意:点value无法获取到文件数据(错误取值),获取的是文件路径,要加上索引值
	eg:
	fileEle.value  
	'C:\\fakepath\\新建 DOC 文档.doc'

class与css操作

1.js操作标签css样式
	标签对象.style.属性名(下划线没有 变成驼峰体)
	标签对象.style.color = 'red'  //字体颜色
	标签对象.style.fontSize = '28px'  //字体大小
	标签对象.style.backgroundColor = 'yellow'  //背景颜色
	标签对象.style.border = '3px solid red'  //边框
	标签对象.style.margin
	.....
2.js操作标签class属性
	标签对象.classList  // 获取标签所有的类属性
	标签对象.classList.add('bg_yellow')  //添加类
  	标签对象.classList.contains()  //验证是否包含某个类属性true/false
    标签对象.classList.remove()  //移除某个类属性
    标签对象.classList.toggle()  // 有则删除无则添加 有则返回true

事件

通过js代码给html标签绑定一些自定义的功能
onclick        当用户点击某个对象时调用的事件句柄
onfocus        元素获得焦点  // 练习:输入框        
onblur         元素失去焦点   //应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证           
onchange       域的内容被改变   //应用场景:通常用于表单元素,当元素内容被改变时触发.

this是实参,表示触发事件的当前元素,函数定义过程中的ths为形参。

绑定事件的多种方式


	<!--绑定事件的方式1-->
    <button onclick="showMsg()">快按我</button>

    <!--绑定事件的方式2-->
    <input type="button" value="快快快" id="d1">

        <script>
            function showMsg() {
                let msg = prompt('你确定要这样吗?');
                console.log(msg)
            }
            let inputEle = document.getElementById('d1');
            inputEle.onclick = function () {
                alert('谁在那里点我!!!')
            }
        </script>

事件函数中的this关键字
	this指代的就是当前被操作的标签对象本身	
 	如果事件函数内有多层嵌套那么最好在一开始用变量存储一下防止后续变化

window.onload

onload方法
	XXX.onload 等待XXX加载完毕之后再执行后面的代码

前端之jQuery类库和Bootstrap

jQuery介绍

jQuery类库类似python中的模块。

  1. jQuery是一个轻量级的、兼容多浏览器的JavaScript库。
  2. jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:“Write less, do more.

jquery内容

选择器
筛选器
样式操作
文本操作
属性操作
文档处理
事件
动画效果
插件
each、data、Ajax

下载链接:jQuery官网
中文文档:jQuery AP中文文档

jQuery版本

1.x  兼容IE678  最终版本:1.12.4 (2016年5月20日)
2.x  不兼容IE678  最终版本:2.2.4 (2016年5月20日)
3.x  不兼容IE678  目前该版本是官方主要更新维护的版本

jQuery对象

jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。

CDN网址:

https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js  //没有压缩
https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js  //压缩

标签对象与jQuery对象

产生对象
    var $variable = jQuery对像
    var variable = DOM对象
    $variable[0]//jQuery对象转成DOM对象
1.不同的对象能够调用的方法是不同的
	在编写代码的时候一定要看清楚手上是什么对象
2.两者可以互相转换
	标签对象转jQuery对象		
    	$(标签对象)
 	jQuery对象转标签对象
    	jQuery对象[0]

jQuery查找标签

1.基本选择器
$('#d1')    id选择器
$('.c1')    class选择器
$('div')    标签选择器
2.组合选择器
$('div#d1')      查找id是d1的div标签
$('span.c1')      查找含有c1样式类的span标签
$('div,span,p')   查找div或者span或者p标签
$('#d1,.c1,span')  查找id是d1的或者class含有c1的或者span标签 
$('*')             查找所有元素选择器
3.层级选择器
$('div p')     查找div里面所有的后代p标签
$('div>p')     查找div里面的儿子p标签
$('div+p')     查找div同级别下面紧挨着的p标签
$('div~p')     查找div同级别下面所有的p标签
4.属性选择器
[attribute]
$('[username]')         查找含有username属性名的标签
$('[username="kimi"]')  查找含有username属性名并且值等于jason的标签
$('input[username="jason"]')
5.基本筛选器

:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)// 匹配所有大于给定索引值的元素
:lt(index)// 匹配所有小于给定索引值的元素
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)

$('li:first')   优化   $('li').first()
6.表单筛选器
$(':text')
$(':password')
$(':checked')   checked与selected都会找到的
$(':selected')  selected
7.筛选器方法
$("#id").next()
$("#id").nextAll()
$("#id").nextUntill("#i2")
$("#id").prev()
$("#id").prevAll()
$("#id").prevUtill("#i2")
$("#id").parent()  //查找当前元素的父辈元素
$("#id").parents() //查找当前元素的所有的父辈元素
$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
$("#id").children()   // 子类们
$("#id").siblings()  //兄弟们

操作标签

1.class操作
jQuery操作            js操作
addClass()			classList.add()
removeClass() 	     classList.remove()
hasClass() 			classList.contains()
toggleClass()		classList.toggle()
2.位置操作
offset()   // 获取匹配元素在当前窗口的相对偏移或设置元素位置
position()  // 获取匹配元素相对父元素的偏移

scrollTop()  // 获取匹配元素相对滚动条顶部的偏移
scrollLeft()  // 获取匹配元素相对滚动条左侧的偏移
3.文本操作
jQuery操作            js操作
text() 				innerText
html()				innerHTML
val()				value
jQuery对象[0].files   files[0]
4.创建标签
jQuery操作            js操作
$('<a>')           document.createElement('a')  
5.属性操作
attr()               xxxattribute()
removeAttr()         

attr针对动态变化的属性获取会失真,
6.文档处理

添加到指定元素内部后面
$(A).append(B)    // 把把B追加到A
$(A).appendTo(B)  // 把A追加到B

添加到指定元素内部的前面
$(A).prepend(B)  // 把B前置到A
$(A).prependTo(B)  // 把A前置到B

添加到指定元素外部的前面
$(A).after(B)  //把B放到A的后面
$(A).insertBefore(B)  //把A放到B的前面

移除何清空元素
remove()   //从DOM中删除所有匹配的元素
empty()   //删除匹配的元素集合中所有的字节点

jQuery事件

JS绑定事件
	标签对象.on事件名 = function(){}

jQuery事件绑定   
	方式1:
    	jQuery对象.事件名(function(){})
	方式2:
    	jQuery对象.on('事件名称',function(){})

	注意:默认是推荐方式1,不行再用方式2

事件补充

1.取消后续事件
	事件函数的最后加return false
2.组织事件冒泡
	事件函数的最后return false
3.等待页面加载完毕再执行代码
    $(function(){})     简写
    $(document).ready(function(){})   完整写法
4.事件委托
    主要是对动态创建的标签也可以使用绑定的事件
    $('body').on('click','button',function(){})
    将body内所有的单击事件委托给button标签执行

jQuery动画效果

1.基本
    show([s,[e],[fn]])
    hide([s,[e],[fn]])
    toggle([s],[e],[fn])
2,滑动
    slideDown([s],[e],[fn])
    slideUp([s,[e],[fn]])
    slideToggle([s],[e],[fn])
3,淡入淡出
    fadeIn([s],[e],[fn])
    fadeOut([s],[e],[fn])
    fadeTo([[s],o,[e],[fn]])
    fadeToggle([s,[e],[fn]])
4.自定义(了解即可)
    animate(p,[s],[e],[fn])

Bootstrap页面框架

布局容器

class='container'         有留白
class='container-fluid'   没有留白

栅格系统

class = 'row'           一行均分12份
class='col-md-8'    划分一行的12份
 栅格偏移
 col-md-offset-3

屏幕参数

col-md-6 col-xs-2 col-sm-3 col-lg-3

重要样式

1.表格样式
	<table class="table table-hover table-striped">
	
	颜色   <tr class="success">
2.表单标签
	class="form-control"
	
3.按钮组
	class="btn btn-primary btn-block"

组件

1.图片
	<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
	图片标签网址:https://fontawesome.com.cn/

2.导航条
	class="navbar navbar-inverse"
3.其他

django

动静态网页

动态网页
	页面数据来源于后端
静态网页
	页面数据直接写死
    
1.访问某个网址后缀 后端代码获取当前时间 并将该时间传到html文件上再返回给浏览器展示给用户看
	读取html内容(字符串类型) 然后利用字符串替换 最后再返回给浏览器
    
2.将字典传递给页面内容 并且在页面上还可以通过类似于后端的操作方式操作该数据
	模板语法>>>:jinja2模块

数据库、后端、数据库三者联动

前端浏览器访问get_user,后端连接数据库查询use表中所有的数据,传递到某个html页面,弄弄好样式,再发送给浏览器展示

python主流web框架

1.django

大而全 自身自带的功能组件非常的多,类似于航空母舰
2.flask

小而精,自身自带的功能组件非常的少,类似于游骑兵

几乎所有的功能都需要依赖于第三方模块
3.tornado

异步非阻塞,速度极快、效率极高、甚至可以充当游戏服务端 ps:sanic\fastapi....

django框架简介

1.版本问题
django 1.x    同步      1.11
django 2.x    同步      2.2    常用
django 3.x   支持异步    3.2
django 4.x   支持异步    4.2
版本之间的差异其实不大,主要是添加了额外的功能
2.运动django注意事项
    1.django项目中所有的文件名目录名不要出现中文
    2.计算机名称尽量不要出来中文
    3.一个pycharm尽量就是一个完整的项目(不要嵌套和叠加)
    4.不同版本的python解释器与不同版本的django可以会出现问题

django基本使用

1.下载
pip3 install django             默认最新版
pip3 install django==版本号      指定版本
	pip3 install django==2.2.22
pip下载模块会自动解决依赖问题(会把关联需要用到的模块一下下载)
2.验证
django-admin
3.常见命令
    1.创建django项目
        django-admin startproject  项目名
    2.启动django项目
        cd 项目名
        python38 manage.py runserver ip:port
4.pycharm自动创建django项目
pycharm会自动创建django项目,但是配置文件中可能会报错,需要改目录配置
	os.path.join(BASE_DIR,'templates')

django app的概念

做一个比喻:django类似于一所大学,app类似于大学里面的各个学校,django里面的app类似于某个具体的功能模块:

1.app类型
user    app    所有用户相关的都写在user app下
goods   app    所有商品相关的都写在goods app下
2.创建应用
    1.终端命令创建应用
    python38 manage.py startapp 应用名

    2.pycharm创建应用
        新建django项目可以默认创建一个,并且要自动注册
        >>>:settings.py>>>INSTALLED_APPS

        INSTALLED_APPS = [
            'app01.apps.App01Config',
            'app02'
        ]

django 主要目录结构

django项目目录名
	django项目同名目录
    	settings.py		 配置文件
    	urls.py			存储网址后缀与函数名对应关系(不严谨)
   		wsgi.py			wsgiref网关文件
	db.sqlite3文件	   django自带的小型数据库(项目启动之后才会出现)
	manage.py			 入口文件(命令提供)
 	应用目录
    	migrations目录	存储数据库相关记录
    	admin.py		 django内置的admin后台管理功能
       apps.py			注册app相关
   		models.py		 与数据库打交道的(非常重要)
    	tests.py		 测试文件
    	views.py		 存储功能函数(不严谨)
   	templates目录			存储html文件(命令行不会自动创建 pycharm会)
    	配置文件中还需要配置路径
        	[os.path.join(BASE_DIR,'templates'),]
 
"""
	网址后缀			路由
	函数				 视图函数
	类				  视图类
重要名词讲解
	urls.py				 路由层	
	views.py			 视图层
	models.py			 模型层
	templates			 模板层
"""

django小白必会三板斧

frpm django.shortcuts import render,HttpResponse,redirect

HttpResponse       返回字符串类型的数据
render             返回HTML页面并且支持传值
redirect           重定向

静态文件相关配置

首先在settings里面找到最后面STATIC_URL = '/static/',在下面配置static所以资源的路径,

STATIC_URL = '/static/'
STATICFILES_DIRS= [
    os.path.join(BASE_DIR,'static')
]
相当于把static路径添加了环境变量中
"""接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回"""

接口前缀动态匹配

django提供的模板语法{% load static %},相对于模块。
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

form表单


action      控制数据提交的地址
	1.action=""  数据默认提交当前页面所在的地址
    2.action="https://www.baidu.com/"  完整网址
    3.action="/index"  朝当前服务端的index地址提交

method      控制数据提交的方法
	1.get    默认
    2.post    可以改post  method="post"
    form表单默认get请求  , 朝浏览器发送请求会是敏感数据,要换成post请求,mothed=post

form表单要注意的点

1.关于请求方法

2.获取用户标签要加name属性,不加name属性是填写不了

3.修改settings里面的配置
1.get请求 :朝服务端索要数据,也可以携带一些额外的要求。

携带额外数据方式:URL?xxx=yyy&uuu=zzz,但是问号后面携带的数据大小是有限制的(2-8kb),并且不能携带敏感数据(密码)

2.post请求: 朝服务端提交数据

携带额外数据的方式:请求体,请求体携带数据安全性较高并且没有大小的限制。

前期发送post请求需要注释掉配置文件中的某一行

request对象方法

request请求结果

请求方法 描述 结果
request.method 结果是纯大写的字符串数据 GET/POST
request.POST 获取post请求请求体里面携带的数据
request.POST.get() 获取列表最后的一个数据值
request.POST.getlist() 获得整个列表数据
request.GET 获取网址问号后面携带的数据值
request.GET.get() 获取列表最后的一个数据值
request.GET.getlist() 获得整个列表数据

pycharm连接MySQIL

1,pycharm初次连接数据库,都要下载相应的驱动,驱动不行就换驱动,验证的话就是登录用户名(端口和地址) 库名,验证登录就用test connection

三个位置查找数据库相关
	1.右侧上方database
	2.左下方database
	3.配置里面的plugins插件搜索安装
注意:	
	都没有再没有卸载pycharm重新装

2.登录管理员账户和密码,连接你需要的数据库(库要提前创建好),在连接之前可以先点击Test Connection 测试连接是一次。注意:在公司不能是管理员的用户登录的!

django连接MySQIL

django自带的sqlite3是一个小型的数据库,功能比较少,主要是用于本地测试。实际项目都会替换它的

1.修改配置文件中数据库设置成django连接MySQL

django连接MySQL要修改上述配置
1.第一配置文件中配置
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',   # 修改成MySQL数据库
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),   # 连接数据库名称 先创建好才能指定
        'ENGINE': 'django.db.backends.mysql',   # 修改成MySQL数据库
        'NAME': 'djangodb1',   # 连接数据库名称 先创建好才能指定
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '123',
        'CHARSET': 'utf8'
    }
}
 注意,左边的名字都要大写!!!!

2.手动改动将默认mysqldb改为pymysql
django默认用的是mysqldb模块链接MySQL, 但是该模块的兼容性不好 需要手动改为用pymysql链接,需要指定模块

1、django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
import pymysql
pymysql.install_as_MySQLdb()
2.django2.X及以上都可以直接通过下载mysqlclient模块解决
pip3.8 install mysqlclient

django ORM简介

ORM:对象关系映射

优点:它能够让不会SQL语句的python程序员,使用python面向对象的语法来操作数据库。

缺点:封装程度太高,有时候sql语句的效率偏低,徐娅自己写SQL语句。

类             表
对象           一条条数据
对象点名字     数据获取字段对应的值

基本ORM操作

1.在models.py中编写模型类
 id=models.AutoField(primary_key=True)
 name=models.CharField(max_length=32)
 age=models.IntegerField()
 2.执行数据库迁移相关命令
 # 数据库迁移
python38 manage.by makemigrations   将操作记录到小本本上(migrations)
# 数据库同步到数据库中
python38 manage.py migrate    将操作同步到数据库上

注意:每次在models.py修改了与数据库相关的代码,都需要在执行上述命令

ORM基本语句

from app01 import models
models.类名.objects.create()
models.类名.objects.filter()
models.类名.objects.update()
models.类名.objects.delete()

django OPM实现基本的增删改查
    if request.method=='POST':
        name=request.POST.get('name')
        pwd=request.POST.get('pwd')
        from app01 import models
        """ 创建"""
        # models.User.objects.create(name=name,age=pwd)
        """ 查询"""
        # res=models.User.objects.filter(name=name)
        # print(res)  # <QuerySet [<User: User object (1)>]>
        # print(res[0].name)  # kimi
        # print(res[0].id)  # 1
        # print(res[0].age)  # 123
        """ 更新"""
        # models.User.objects.create(name=name, age=pwd)
        # models.User.objects.filter(id=2).update(name=name,age=pwd)
        #现阶段:后端获取到的前端数据,一般都是字符串
        """ 删除"""
        models.User.objects.filter(id=2).delete()

标签:总结,jQuery,对象,标签,元素,django,js
From: https://www.cnblogs.com/zhanglanhua/p/16974850.html

相关文章