DAY 11.02
1,之前总结
复习js操作获取标签,操作标签,和ajax等
2,了解flask 视图 MVT model view t?
运行flask程序时, 提示端口被占用
@报错
socket.error: [Errno 48] Address already in use
解决
查看占用5000端口的进程
lsof -i:500
关闭进程
kill
3,web原理 客户端发送响应,服务器返回响应.
总结(浏览器在地址栏里写上百度回车的分析
1,浏览器自动补全http或者https的协议命令,
2,浏览器访问dns服务器解析baidu映射的ip地址,给浏览器.
3,浏览器向指定的ip地址发送请求报文.报文包括请求头,请求行,空行,请求体,还有请求协议请求方法等.
4,服务器接受请求,并处理请求,判断请求内容,若为静态资源则直接返回,若为动态资源,则查询数据库,然后返回数据.
5,服务器生成响应报文给客户端.)

3.1 客户端:浏览器,app,代码,测试工具等 http 80 https 443
3.2 dns 域名解析服务器 世界上13台根域名解析服务器,大部分在美国.子级域名解析服务器. 返回ip地址
3.3 浏览器以特定格式向ip地址发送报文请求 请求方法 /post/delete/put/get 增删改查四种方法.
3.4 服务器接收请求,处理请求.六字箴言(写接口,调接口) 也叫api 函数 类 请求处理类等
写接口:接收参数--检查参数--业务请求--返回数据 业务请求里包含查询数据去数据库里.
调接口:调别人的接口 或者自己的接口.
3.5 服务器生成响应报文返回给浏览器.(包括默认处理方式:静态资源 html css 等
和动态处理方式:有请求参数的请求 ;查询字符串:url中?后面的以=传值,以&分割的信息.
响应状态码:
返回的状态码和状态不一致的情况是有可能发生得
比如Web应用程序内部错误,但仍然返回
200 OK
请求正常处理完毕
204 No Content
请求成功处理,没有实体的主体返回
206 Partial Content
GET范围请求已成功处理
301 Moved Permanently
永久重定向,资源已永久分配新URI
302 Found
临时重定向,资源已临时分配新URI
303 See Other
临时重定向,期望使用GET定向获取
304 Not Modified
发送的附带条件请求未满足
307 Temporary Redirect
临时重定向,POST不会变成GET
400 Bad Request
请求报文语法错误或参数错误
401 Unauthorized
需要通过HTTP认证,或认证失败
403 Forbidden
请求资源被拒绝
404 Not Found
无法找到请求资源(服务器无理由拒绝)
405 method not allowed
请求方法不允许
500 Internal Server Error
服务器故障或Web应用故障
503 Service Unavailable
服务器超负载或停机维护
4, 框架介绍
flask特点:轻巧简洁扩展 核心 werkzeug 和 jinja2 ???
常用扩展包:
wsgi 协议
@常识 奇数版本是开发版 偶数版一般是稳定版
5,mk创建进入虚拟环境
pip freeze > requirement.txt
6, hello world
三点:
6.1 视图函数不能重名.
6.2 url可以重复
因为http不同的请求方法为了不同的操作.
@一个函数只有一个返回值 布尔类型的!
debug=True ???
@返回数据只能是浏览器认识的类型
@不使用装饰器函数能实现路由映射.
7, 返回不符合协议默认状态的状态码,可以实现数据交互.
@app.route('/abc',methods=['POST','GET'])
def hello2018():
# return 可以返回状态码,也可以返回不符合http协议的状态码,用来实现前后端的数据交互
"""
前端发送ajax:
$.ajax({
url:'/abc',
data:。。。, 发送到后端的数据
contentType:'', 发送到后端的数据类型
dataType:'json' 后端返回的数据类型
success:function(resp){
if (resp == '666'){
alert(errmsg)
}else{
}
}
})
errno=666,errmsg='用户名已注册'
return:()
8, 加载配置文件的三种形式:
8.1 外链 从外部py中导入
8.2 ini文件
8.3 envvar('外部环境变量的设置文件')
from flask import Flask
# 导入配置类
# from config import Config
from config import config_dict
app = Flask(__name__)
# 加载配置文件:三种实现形式
# 1、加载配置对象,config是flask内置的配置对象
# 重点掌握:因为扩展性更强
# app.config.from_object(Config)
# app.config.from_object(config_dict['pro'])
# 2、加载配置文件
# app.config.from_pyfile('config.ini')
# 3、加载环境变量
# app.config.from_envvar('SET')
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run()
9, 9.1 重定向 redirect(url) 项目地址变化的需求 需要导入方法
9.2 url_for 跟视图函数名 这样少该地址. 反向解析 和url_map相对.
from flask import Flask,redirect,url_for
app = Flask(__name__)
# 重定向redirect 接受参数为location,具体的url地址
# 重新发送网络请求,跳转页面
#项目路径url或文件发生变化的情况下需要重定向
@app.route('/')
def index():
url = 'https://www.baidu.com/'
return redirect(url)
# @app.route('/for')
#
# # url_for 反向解析,接受参数endpoint 视图函数名
def re_url_for(jisis):
return redirect(url_for('index'))
if __name__ == '__main__':
print(app.url_map)
app.run()
# 重定向如果是定向给新的地址,那原来的地址要不可用,吗
# 其实如果比如在不同页面点击链接都会跳转到制定网址也比较形象.
# 或者,比如原地址是127.0.0.1:5000, 因为不能用了 或者不想让展示,就直接加一个重定向,让
# 他定向到想展示的地址.那怎么实现好多方法都定向到同一地址?
今日总结;
1,浏览器工作流程
2,什么是框架
3,什么是重定向
DAY 11.05
1,昨日总结 after_request 如果没有抛出错误,在每次请求后执行 有异常不会执行 异常是指服务器内部异常.
127.0.0.1 - - [05/Nov/2018 09:00:27] "GET / HTTP/1.1" 200 -
before request run---
after request run---
teardown request run---
2,上下文 语义环境 比如:
包含请求上下文:request 和 session
和应用上下文:current_app 和g
3,get请求和post请求的区别
3.1 get请求没有请求体,
3.1 并且url地址栏参数有长度限制.不超过2kb(浏览器限制的)
提交form文件