WEB工作原理
-
C/S和B/S架构
-
B/S架构工作原理
客户端(浏览器) <=> WEB服务器(apache/nginx) <=> uWSGI <=> Python(Flask)
Flask框架
-
简介
flask是一个非常小的Python Web框架,被称为微型框架;只提供了一个强健的核心,其它功能都是通过扩展来实现。意味着可以根据项目的需求量身打造。
-
组成
-
调试、路由、WSGI系统
-
模板引擎(Jijia2,是Flask核心开发组人员开发)
-
-
安装
pip install flask
-
完整程序
浏览器测试:http://127.0.0.1:5000
-
启动参数
参数 说明 debug 是否开启调试模式,默认为False;开启后会自动加载代码 threaded 是否开启多线程,默认是不开启的 port 指定端口号 host 指定主机,设置为'0.0.0.0'之后可以通过IP访问 app.run(debug=True, threaded=True, port=5050, host='0.0.0.0')
-
请求与响应
-
变量或对象
变量/对象 上下文 说明 current_app 程序上下文 当前运行的应用实例 g 程序上下文 处理请求的临时变量,每次请求都会重置 request 请求上下文 请求对象,保存了客户端所有的HTTP的请求信息 session 请求上下文 用户会话,用于保存需要'记住'的会话信息 -
请求钩子函数
钩子函数 功能描述 before_first_request 第一次请求之前 before_request 每次请求之前 after_request 每次请求之后,前提是没有异常 teardown_request 每次请求之后,即使有异常发生 -
-
视图函数
-
无参路由
-
带参路由
-
说明:
-
-
请求(request)
-
响应(response)
-
重定向(redirect)
-
终止(abort)
-
会话控制(cookie/session) 会话信息是在请求头中传输的,所有的请求信息都在request中
flask-script扩展
-
简介
简单来说,就是一个flask终端运行的解析器;因为在测试完项目后,最好不要改动任何代码,否则会带来风险,所以借助扩展库实现启动,通过传递参数完整不同的启动。可以做到开发完毕后,不修改任何的代码,就可以完成项目的部署,
-
安装
pip install flask-script
-
使用
启动:python manage.py runserver
-
启动参数
实例:python manage.py runserver -d -r --threaded
蓝本(blueprint)
-
说明:
当我们的代码越来越复杂时,将所有的视图函数放在一个文件中很明显时不合适的;如果能够根据功能模块进行划分,就是将不同功能的视图函数分类存放在不同的文件中。存储在不同的文件中,蓝本就是为解决此问题而生的。
-
使用
扩展
-
MVC
M:model,模型,数据模型
V:view,视图,负责数据展示
C:controller,控制器,负责业务逻辑的处理
-
MTV
M:model,模型,就是数据模型
T:templates,模板,负责数据展示
V:view function,视图函数,负责业务逻辑的处理
template 引擎 jinjia2
1.准备工作,目录结构
2渲染模板
render_template()
3.使用变量
在templat下创建一个模板文件var.html
? 模板渲染的作用是什么?
4.使用函数
在模板文件中可以使用特定的函数,对指定的变量处理后再显示
safe渲染时不转义,默认转义。
不要滥用safe,否则可能不安全
5.流程控制
从数据库中以列表的形式去拿数据,然后对它进行遍历从而来显示它
6.文件包含
{# 包含另一个文件,意思就是将被包含的文件内容黏贴到此处#}
7.宏的定义 比include更方便
{#定义宏#}
说明:采用类似python中函数的形式进行定义和调用,通常我们可以把特定功能显示定义成一个宏,哪里使用哪里调用即可,避免了相同效果的重复书写
8.模板的继承
9.flask-bootstrap
在使用bootstrap时,发现重写block后原来的显示效果消失,可能是忘了调用super
定义项目基础模板
说明:一个项目中,很多页面都很相似,只有细微的差别,如果每个都定制势必会有大量的重复代码的书写。为了简化这种重复的工作,其它页面继承该基础的模板,只需要稍微定制即可。