Flask项目的简介和创建
- 一、什么是Flask?
- 1.WSGI
- 2.Werkzeug
- 3.jinja2
- 二、pycharm创建flask项目
- 1.创建flask项目
- 2. 项目结构介绍:
- 三、项目代码介绍
- 四、路由的请求和响应
一、什么是Flask?
Flask是一个基于Python的,基于Werkzeug、WSGI工具包和Jinja2模板引擎的Web应用程序框架。
1.WSGI
Web Server Gateway Interface(Web服务器网关接口,WSGI)已被用作Python Web应用程序开发的标准。 WSGI是Web服务器和Web应用程序之间通用接口的规范。
2.Werkzeug
它是一个WSGI工具包,它实现了请求,响应对象和实用函数。 这使得能够在其上构建web框架。 Flask框架使用Werkzeug作为其基础之一。
3.jinja2
jinja2是Python的一个流行的模板引擎。Web模板系统将模板与特定数据源组合以呈现动态网页。
Flask通常被称为微框架。 它旨在保持应用程序的核心简单且可扩展。Flask没有用于数据库处理的内置抽象层,也没有形成验证支持。相反,Flask支持扩展以向应用程序添加此类功能。
二、pycharm创建flask项目
1.创建flask项目
2. 项目结构介绍:
–项目名:
|—static (静态)js css
|—templates (模板)
|—app.py (运行|启动)
web项目:
mvc:
model 模型
view 视图
controler 控制器
python:
mtv:
model 模型
template 模板 —》html
view 视图 起控制作用 python代码
启动项目:在Terminal中输入python app.py即可启动flask项目,通过命令行返回的地址即可访问web应用程序的内容
点击IP地址后:
以上显示内容,是在app.py入口文件中定义的:
三、项目代码介绍
app = Flask(name)
创建flask对象
run(host=‘ip地址’,port=‘端口号’)
调用run完成项目初始化并启动
ip地址,一个端口号对应的是一个程序
http://192.168.1.5:5000/ 如果host改成:0.0.0.0 外网可以访问
默认情况下只能是本机。
app.run(host=‘0.0.0.0’, port=5001, debug=True)
debug: 布尔类型的
debug=True 开启了debug调试模式 只要代码改变服务器会重新加载最新的代码 适用于开发环境development
debug=False 默认 代码发生改变不会自动加载 适用于production环境
环境:
production
development
testing
通常在代码中设置运行环境的话,可能后面还需更改项目代码,并且不太方便,一般设计环境的配置可通过配置文件的方式去按需切换环境。
设置配置文件:
settings.py
ENV = 'development'
DEBUG = True
四、路由的请求和响应
浏览器地址栏输入的内容: http://localhost:8000/index ---->服务器 ----->app ----->有没有这个路由---->有,就会执行路由匹配的函数 ------> return ‘hello world’ -----> response ------>客户端的浏览器
一般web程序设计两个对象,一个是request,一个是response:
(1)请求:request
http协议:
request 请求
请求行 : 请求地址: http://0.0.0.0:8000/index
请求方法是什么? method: get post
请求头: key:value
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Host: 0.0.0.0:8000
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
请求体:
(2)response 响应
响应行: 状态码 200 ok , 404 not found ,500 ,302, ????作业
响应头:
Content-Length: 18
Content-Type: text/html; charset=utf-8
Date: Mon, 18 May 2020 08:57:02 GMT
Server: Werkzeug/1.0.1 Python/3.7.4
响应体:
Hello World333333!