当前位置: 首页 > news >正文

Django-(2)

今日内容概览

  • 静态文件及相关配置
  • 请求方法
  • request对象方法
  • pycharm连接MySQL
  • Django谅解MySQL
  • Django orm
  • orm语法
  • orm外键关联

静态文件及相关配置

静态文件:html页面上使用的,不会进程改变的资源

  1. 第三方框架文件
  2. css文件
  3. js文件
  4. 图片文件

针对静态文件资源一般都放在static文件夹中,当static文件夹下出现了很多不同类型的文件资源,还可以分类管理:img文件夹、js文件夹、css文件夹、others文件夹

我们在访问django框架资源的时候之所以可以拿到数据是因为提前在urls.py中开设了相应的资源接口,如果访问不到资源,那么就是没有开设相应的接口

那么在浏览器想要看到好看的页面也需要访问css文件,但是css文件又没有添加到对应关系中,所以就只能看到html页面最原始的模样

所以针对静态文件资源的访问也需要提前开设相应的接口

在string.py中添加静态文件资源配置
STATICFILES_DIRS = [
	os.path.join(BASE_DIR, 'static')
]
接口前缀
STATIC_URL = '/static/'
想要访问静态文件只能使用这个前缀才能访问,否则会访问失败

如果想要更改接口前缀,那么所有使用了静态文件的html都需要修改前缀,太过麻烦;那么就可以使用动态解析

{% load static %}
<link rel='stylesheet' href='{% static "bootstrap-3.4.1-dist/css/bootstrap.min.css" %}'>

请求方法

1. GET请求
	朝别人索要数据,也可以携带额外的数据
	url?xxx=zzz&aaa=bbb
	上述携带数据的方式有两个限制
		1. 数据只能是非敏感数据
		2. 数据大小不能太大
	GET请求没有请求体
2. POST请求
	朝别人提交数据
	也可以携带额外的数据
	数据放在请求体中,并且数据大小没有限制
3. form表单默认的数据提交方式是get
	action='' 		数据提交的地址,有三种写法
					不写:朝当前页面所在的地址提交
					写后缀:/login/,会自动补全ip与port
					写全称:https://www.xxx.com/
	method='post'	提交方式
4. 提交post请求可能会出错,需要去配置文件中注释一行代码

在这里插入图片描述

request对象方法

request.method						获取请求方式,结果是一个纯大写的字符串
# POST
request.POST						获取POST请求发来的普通数据
# <QueryDict: {'username': ['aaa', 'bbb', 'ccc'], 'password': ['123']}>
request.POST.get('username')		默认获取列表中最后一个数据值
# ccc
request.POST.getlist('username')	获取键对应的整个列表
# ['aaa', 'bbb', 'ccc']
request.GET							获取url后边携带的非敏感数据
# http://127.0.0.1:8000/login/?username=aaa
# <QueryDict: {'username': ['aaa']}>
request.GET.get('username')			默认获取列表中最后一个数据值
request.GET.getlist('username')		获取键对应的整个列表

pycharm连接MySQL

  1. 查找pycharm提供的database按钮
    右侧边栏
     左下角
    如果没有可能是没有下载插件,可以在设置里下载
    在这里插入图片描述
    或者卸载重装pycharm
  2. 首次连接数据库需要下载对应的驱动
    在这里插入图片描述
    点击Download下载即可
  3. 简单的操作增删改查

Django连接MySQL

django默认使用的是sqlite3,但是这款数据库一般只用于本地测试,功能较少

1. 修改配置文件中的配置(键都用大写)
DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.mysql',  # 指定数据库软件名称
		'NAME': 'db1',  # 指定库名
		'USER': 'root',
		'PASSWORD': '123',
		'HOST': '127.0.0.1',
		'POST': 3306,
		'CHARSET': 'utf8'
	}
}
2. 指定连接MySQL的模块
	django1.11版本需要在项目或者应用目录下的__init__.py中编写一行代码
		import pymysql
		pymysql.install_as_MySQLdb()
	django2.2以上版本则需要使用mysqlclient模块
		pip install mysqlclient

Django orm

orm:对象关系映射(Object Relational Mapping)

类			映射为		表
对象		映射为		记录
对象点属性	映射为		字段对应的值

"""orm的存在可以让不会MySQL的python程序员能够使用python的语法简单快捷的操作MySQL"""

1. 先去应用目录下的models.py编写模型类
	class User(models.Model):  类似于定义表名
		id = models.AutoField(primary_key=True)  # 类似定义主键
		# id int primary key auto_increment
		
		name = models.CharField(max_lenght=32)  # 类似定义了普通字段
		# name varchar(32)
		
		pwd = models.IntegerField()  #  类似定义了整数
		# pwd int
2. 数据库迁移(同步)命令
	1. 将models中有关数据库的操作记录下来(migrations)
		python manage.py makemigrations
	2. 将真正的操作影响到数据库中
		python manage.py migrate
"""
当修改了models中与数据库相关的代码时,都需要执行上述的命令
可以简写,也可以指定应用单独迁移(同步)
"""
3. 表的主键在orm中,可以不写,orm会自动添加一个id的主键

简写命令:在这里插入图片描述

orm语法

1. 查
	models.User.objects.filter()  # <QuerySet [<User: User object (1)>, <User: User object (2)>, <User: User object (3)>]>
	# 结果可以看成是一个列表套数据对象
	# 可以使用索引获取对象,但是不推荐使用,可以使用first()方法,如果没有值会返回none
2. 增
	models.User.objects.create(name='jerry', pwd=231)
3. 改
	modeles.User.objects.filter(id=1).update(name='json')
	# 修改需要选择修改目标,否则会修改全部
4. 删
	models.User.objects.filter(name='jerry').delete()
	# 删除数据不能够直接删除,要配合filter使用,想要全部删除数据filter内不填写条件即可

orm外键关联

一对多
	外键字段建在多的一方
	外键字段名 = models.ForeignKey(to='目标字段名', on_delete=models.CASCADE)

多对多
	字段直接建在某张表中,orm会自动创建第三张表
	外键字段名 = models.ManyToManyField(to='目标字段名')

一对一
	字段建在查询评率高的表中
	外键字段名 = models.OneToOneField(to='目标字段名', on_delete.CASCADE)

"""
外键字段orm会自动在末尾添加'_id'
想要自己选择外键关联字段,在括号内使用'to_field=xxx'修改
"""

相关文章:

  • opencv remap inverse 这里的x,y是dst下的,所以我没法在知道src的x,y下得到该点在dst的位置.
  • 温故知新(十三)——CAN
  • 如何跳出forEach循环
  • 大咖论道|银行核心系统国产分布式数据库选型思考
  • 简单5分钟,将lowcode低代码融入到你的中后台管理系统
  • token、cookie、session
  • 强大多云混合多K8S集群管理平台Rancher入门实战
  • 学习编程的第二十四天
  • 第五十一周总结——对象遍历方法
  • java计算机毕业设计民宿预订管理系统设计与实现源码+数据库+系统+lw文档+mybatis+运行部署
  • 渗透测试-微信小程序-公众号测试经验总结
  • innodb存储引擎学习–备份
  • 《nginx》二、nginx反向代理
  • FastAPI 学习之路(三十一)CORS(跨域资源共享)
  • pytorch数据增强
  • [LeetCode] Wiggle Sort
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 08.Android之View事件问题
  • If…else
  • JavaScript学习总结——原型
  • js如何打印object对象
  • js中的正则表达式入门
  • leetcode46 Permutation 排列组合
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Python学习之路13-记分
  • redis学习笔记(三):列表、集合、有序集合
  • SAP云平台里Global Account和Sub Account的关系
  • scala基础语法(二)
  • 阿里云前端周刊 - 第 26 期
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我的zsh配置, 2019最新方案
  • 用jquery写贪吃蛇
  • HanLP分词命名实体提取详解
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 移动端高清、多屏适配方案
  • 昨天1024程序员节,我故意写了个死循环~
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #控制台大学课堂点名问题_课堂随机点名
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (C语言)fgets与fputs函数详解
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)大道至简,职场上做人做事做管理
  • *p++,*(p++),*++p,(*p)++区别?
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET连接数据库方式
  • .NET企业级应用架构设计系列之应用服务器
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @RequestMapping 的作用是什么?