FastAPI框架入门(六)


MarkDown的新学快捷键

1、 减号加空格,列表。
使用 tab建,往下一级,
shift + tab 返回上一级
在这里插入图片描述
2、插入图片时自动保存到指定目录

在这里插入图片描述
3、Pyhton 目录的文件

C:\Python39
	- python.exe  			就是我们的解释器。
	- Scripts
		- pip.exe 			帮助我们以后安装第三方包。
	- Lib		  			Python内置的源码
		- 文件/文件夹	 	 Python提供的内置功能
		- site-packages     通过pip去安装第三方的包时,他就会放在这个目录。
cmd 运行
python  +   c:/xxx.py(拖过去也可以)
# 一些没记住的
improt os
os.listdir(./xxx)
# 1比特, 8个比特等于一个字节,1kb等于1024个字节,3个字节一个中文字符(UTF-8)。
# isdecimal,判断字符串里面是不是整数。
# startswith和endswith,判断字符串是以xx开头或xx结尾。
# strip/lstrip/rstrip,去除空白(空格、换行符\n、制表符\t)  replace,替换
# join拼接字符串,列表中必须都是字符串。“,”.join(list)
# 字符转字节:data.encode("utf-8")   转回来data.decode()
# 长度的补足 
name = "宁摆场"
text = name.center(13,"*")  # "*****宁摆场*****"
name = "宁摆场"
text = name.ljust(13,"#")
print(text) # "宁摆场##########"  还有rjust
# 长度的补足  name.zfill(10),长度为10 不足0补  只能左补:"0000000卢红萍"
# 倒序,for i in range(len(message)-1, -1, -1):
# 列表,索引插入 user_list.insert(1,"孟东珏")  列表的sort()操作在原列表进行。
# 随机去user_list列表中抽取一个数据  data = random.choice(user_list)
# 列表弹出 user_list.pop(1)  清空列表:list.clear()
# 列表和字典,不能做键值,因为不可哈希。
# 字典的get方法:v3 = info.get("email", "xxx")  # 当键不存在时,v3 = "xxx"
# dict.keys()(.values()) 取出键,做列表(高防的列表)   .items()取键值对
# 删除键值对 del info["k2"]
#  集合添加元素,,用 .add()  删除  v1.discard(11)  交集 v1.intersection(v2) 并集 v1.union(v2)
#  差集 v1.difference(v2)  表示 v1 - v2

在这里插入图片描述
2、 文件操作

# 1.打开文件
# 	- "unicom.txt" 文件路径
# 	- mode="wb"    写文件的模式打开
file_object = open("unicom.txt", mode="wb")

# 2.写内容
name = "武沛齐"   # unicode
file_object.write( name.encode("utf-8") )

# 3.关闭文件
file_object.close()

# ab,文件不存在,则创建文件;存在则打开文件,写内容时,永远写的文件的尾部
file_object = open("xxxx.txt",mode="ab")

#  读取文件内容
# 1.打开文件
file_object = open("user.txt", mode='rb')

# 2.读取文件的所有内容
data = file_object.read()
data_string = data.decode('utf-8')
print(data_string)  #  是一个大字符串

# 3.关闭文件
file_object.close()

#  读取大文件时
file_object = open("user.txt", mode='rb')

# 2.读取大的文件时,可以逐行去读取
line1 = file_object.readline()

readline()可以用于读取非常大的文件,因为它每次只加载一行,而readlines()会一次性加载整个文件,如果文件太大而内存又不够,将会导致程序崩溃。

函数传参:
#  def func(*a1):  一个星号以元组给a1,两个星号以字典给a1
# pip install -r requirements.txt

3、

import random

# 1.获取随机的整数
v1 = random.randint(1, 20)  # 大于等于1; 小于等于20
print(v1)

# 2.获取随机的小数
v2 = random.uniform(1, 10)
print(v2)

# 3.随机抽取1个数
data_list = [11, 22, 33, 44, 55]
v3 = random.choice(data_list)
print(v3)

# 4.随机抽取多个数
data_list = [11, 22, 33, 44, 55]
v4 = random.sample(data_list, 3)
print(v4)

# 5.打乱顺序
num_list = [i for i in range(100)]
random.shuffle(num_list)
print(num_list)

JSON文件知识

1、本质上:是一种数据格式,字符串形式。

用处:让不同编程语言之间实现数据传输。

在这里插入图片描述

# 处理中文的时候
import json

info = {"name": "邱恩婷", "age": 19}

v1 = json.dumps(info, ensure_ascii=False)
print(v1) # {"name": "邱恩婷", "age": 19}

# 2.停止N秒,再继续运行
while True:
    print(1)
    time.sleep(1)
# 时间格式的
import datetime

v1 = datetime.datetime.now()

request模块

让我们可以通过代码想某些地址发送网络请求,然后我们就可以获取到结果。

HTML、CSS相关基础。

网络请求

  • 在浏览器的URL中写入地址,点击回车,访问。
     浏览器会发送数据过去,本质上发送的是字符串:
     "GET /explore http1.1\r\nhost:...\r\nuser-agent\r\n..\r\n\r\n"
     
     浏览器会发送数据过去,本质上发送的是字符串:
     "POST /explore http1.1\r\nhost:...\r\nuser-agent\r\n..\r\n\r\n数据库"
  • 浏览器向后端发送请求时

    • GET请求【URL方法 / 表单提交】

      • 现象:GET请求、跳转、向后台传入数据数据会拼接在URL上。

        https://www.sogou.com/web?query=安卓&age=19&name=xx
        

        注意:GET请求数据会在URL中体现。

    • POST请求【表单提交】

      • 现象:提交数据不在URL中而是在请求体中。

页面上的数据,想要提交到后台

  • form标签包裹要提交的数据的标签。
    • 提交方式:method="get"
    • 提交的地址:action="/xxx/xxx/xx"
    • 在form标签里面必须有一个submit标签。
  • 在form里面的一些标签:input/select/textarea
    • 一定要写name属性 <input type="text" name="uu"/>

css,专门用来“美化”标签。

缓存数据库Redis

1、连接数据库的方法,
redis这个包,
redis.redis.ConnectionPool 去创建连接池
redis.StrictRedis去接受依赖,对redis数据进行处理

2、把 连接池给,,app.state 通过这个去调用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

中间件—Cookie----Session

一、共同之处:
cookie和session都是用来跟踪浏览器用户身份的会话方式。

Cookie的工作原理

(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据区分不同的用户

cookie数据保存在客户端,session数据保存在服务端。

Session的工作原理

(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。
name为JSESSIONID的Cookie不存在(关闭或更换浏览器),返回1中重新去创建Session与特殊的Cookie
name为JSESSIONID的Cookie存在,根据value中的SessionId去寻找session对象
value为SessionId不存在**(Session对象默认存活30分钟)**,返回1中重新去创建Session与特殊的Cookie
value为SessionId存在,返回session对象

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

PBAC权限设置—JWT令牌

1、为了达成不同账号(员工、总裁)登录系统后看到不同页面,执行不同功能,RBAC(Role-Based Access control)权限模型,就是根据角色的权限,分配可视页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值