首页 技术 正文
技术 2022年11月14日
0 收藏 880 点赞 3,387 浏览 3214 个字

HTTP协议补充

四大特性:

  1. 基于请求响应
  2. 基于TCP/IP协议之上的应用层协议
  3. 无状态 不能保存用户信息(cookie,session,token)
  4. 短链接

请求数据格式:

请求首行(请求方式,http版本)
请求头
\r\n
请求体(post请求有,get没有)

响应数据格式

响应首行(状态码)
响应头
\r\n
响应体

响应状态码(http协议规定)

200 请求成功 OK
404 请求数据不存在
500 服务器内部错误

业务状态码

一般规定一个正确的,只规定200是正确,其他的全部为异常

eg:
1.用户名不存在
2.验证码错误
1)随机生成 458965
2)校验验证码
存入验证码到数据库(MySQL),表结构
id, code, phone create_time
1 123456 110 2021-10-01 10:10:10
2 123457 110 2021-10-01 11:10:10
3 123458 110 2021-10-01 12:10:10
redis也可以存
如果不限制一天当中,不限制发送次数
存到session中3.密码错误json.dumps({})crm,11 财务12,销售13,主站
def index()user_dic = {'code':121001, 'msg':'验证码错误','data':[]}
user_dic = {'code':121002, 'msg':'用户名不存在','data':[]}
user_dic = {'code':121003, 'msg':'密码错误','data':[]}# 如果都正确
user_dic = {'code':200, 'msg':'OK','data':[]}
return JSONrESPONSE(user_dic)
"""

web简易版框架

import socketserver = socket.socket()  # TCP
server.bind(('127.0.0.1', 8080))server.listen(5)while True:
sock, addr = server.accept() # 接收浏览器发送过来的数据
data = sock.recv(1024) # 如果超过1024的数据,出现粘包现象
print(data) sock.send(b'HTTP/1.1 200 OK \r\n\r\n') data = data.decode('utf-8')
current_path = data.split(' ')[1] # ['GET', '/login/', ''] """
需求:输入不同的后缀,返回不同的内容
1. 知道用户输入的后缀? 2. 做判断,
if path == '/index'
:return 'index'
:return index()
""" # 判断
if current_path == '/index/':
sock.send(b'index')
elif current_path == '/login/':
sock.send(b'login')
else:
# 向浏览器发送数据
sock.send(b'404') sock.close()

wsgiref模块

简易版本

# uwsgi  WSGI wsgireffrom wsgiref.simple_server import make_serverfrom urls import urls
def run(env, response):
""" :param env: 请求相关的数据
:param response: 响应相关的
:return: 返回值
"""
print(env) # 大字典格式,帮我们封装了http请求过来的所有数据
"""
输入不同的后缀,返回不同的内容
"""
response('200 OK', []) current_path = env.get('PATH_INFO') # /index/
# if current_path == '/index/':
# res = index() # /index/
# # return [b'index']
# return [res.encode('utf-8')]
# elif current_path == '/login/':
# return [b'login']
# return [b'404']
func = None
for url in urls:
# url => ('/index', index),
# current_path => /index /login
if current_path == url[0]: # /index
func = url[1]
break # func => None , index, login reg 函数内存地址
if func:
res = func()
return [res.encode('utf-8')]
# return [res]
else:
return [b'404']if __name__ == '__main__':
server = make_server('127.0.0.1', 8080, run)
"""
相当于帮我们实现了socket服务端
实时监听 127.0.0.1:8080,
当请求来的时候,全部交给run方法
注意:
run方法有两个参数
""" server.serve_forever() # 启动服务端
内部本质:帮我们写了socket服务端"""
urls.py => 后缀
views.py => 函数
templates => 存html文件 也叫模板
"""如果在让你加功能,只需要在urls.py中添加一个路径,然后在views中写逻辑就可以了

Django框架

python中主流框架
1. django
特点:大而全,重量级框架
缺点:笨重
2. flask
特点:小而美,轻量级框架,
缺点:依赖于第三方的模块
3. tornado
特点:异步非阻塞,解决高并发问题
缺点:难

创建Django框架

# 1、cmd命令行创建
1. # django-admin startproject mysite
2.启动项目
必须切到项目目录下,跟manage.py同级目录下面# python3 manage.py runserver
3.创建应用
Next, start your first app by running python manage.py startapp [app_label]. # python3 manage.py startapp app01 # 2、pycharm创建# 命令行创建和pyacharm创建的区别1.pycharm多了一个templates文件 2. # 命令行创建 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], } # pycharm创建的 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] } #####################注意事项############################### 创建完应用之后,必须在下面注册应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', 'app01' ] ####################################################

应用介绍

# 项目就相当于是一所大学应用就相当于是二级学院1. 计算机学院    2. 土木工程    3. 食品工程    ....    eg:    淘宝为例子    1. 用户相关的   user        2.订单相关order        3.地址相关address        4. 商品相关goods       # 应用名一定要见名知意### 一个项目至少有一个应用
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,497
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,910
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,744
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,498
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,136
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,300