Python Web 框架
Flask 轻量级WEB框架
AJAX 在WEB中完成异步请求和响应
Django 重量级WEB框架

1.静态网页 和 动态网页
静态网页:无法与服务器做动态交互的网页
动态网页:允许与服务器做动态交互的网页
2.WEB 与 服务器
1.WEB : 网页(HTML,CSS,JS)
2.服务器
能够给用户提供服务的机器就称为 "服务器"
1.硬件 与 软件
硬件:一台计算机
软件:一个能够接受用户请求并给出响应的程序
1.APACHE
2.TOMCAT
3.IIS(Internet Information Service)
4.Nginx
2.作用
1.存储WEB上的信息
2.能够处理用户的请求(request)并给出响应(response)
3.执行服务器端的程序
4.具备一定的安全功能
3.框架
1.什么是框架
框架是一个为了解决开放性问题而存在的一种结构
框架本身会提供一些基础的功能
我们只需要在基础功能之上搭建自己的操作即可
2.Python Web 框架
1.Flask - 轻量级
2.WEBPY - 轻量级
3.Tornado - 异步框架
4.Django - 重量级框架
3.框架模式
1.MTV
M : Models , 模型层 , 主要负责根据数据库建模
T : Templates , 模板层 ,处理用户的显示的内容的,如:html
V : Views ,视图 , 处理与用户交互的内容(请求和响应)
2.MVC
M : Models , 模型层 , 主要负责根据数据库建模
V : Views , 视图层 , 处理用户的显示的内容的,如:html
C : Controller , 控制器 ,处理与用户交互的内容(请求和响应)

M --- M
T --- V
V --- C
4.Flask 框架
1.什么是Flask
Flask是一个基于Python并且依赖于Jinja2模板引擎和Werkzeug WSGI服务的一个微型框架
Flask中包含一个轻量级的web 服务器主要用于在开发阶段测试使用

WSGI : Web Server Gateway Interface (WEB服务网关接口)

2.安装Flask
1.查看已安装的Flask 及其 版本
在 python 的交互模式中
1.import flask
没报错:已经安装了Flask,可以继续查看版本
报错:没安装
2.flask.__version__
已安装Flask的情况下,查看其版本
2.安装Flask
sudo pip3 install flask
pip3 download flask
3.Flask 的初始化
见代码... ...

练习:
访问路径:http://localhost:5000/login
在网页中显示:欢迎访问登录页面
访问路径:http://localhost:5000/register
在网页中显示:欢迎访问注册页面

5.Flask - 路由
1.什么是路由
客户端发送请求给服务器,服务器需要将请求发送给Flask程序实例
程序实例需要知道每个url请求对应的处理代码是谁.所以程序中必须要有一个 url请求地址到python运行函数的一个映射.处理url和函数之间的关系的程序就是"路由"
2.路由的体现
在Flask中,路由是通过 @app.route() 装饰器来表示的
1.路由的基本表示
#http://127.0.0.1:5000/
@app.route('/')
def index():
return "xxx"
#http://127.0.0.1:5000/manager/admin/login
@app.route('/manager/admin/login')
def login():
return "xxx"
2.带参数的路由
路由中可以携带参数来表示要传递到视图中的数据
http://localhost:5000/show/laowang
http://localhost:5000/show/wangwc

1.基本带参路由
@app.route('/show/<name>')
def show1(name):
name:表示的就是地址栏上传递的数据
pass
2.指定参数类型的路由
允许在声明路由时指定参数类型
避免了在程序中再转换
@app.route('/show/<name>/<int:age>')
def show(name,age):
name : 字符串
age : 整数
int:类型转换器
Flask中所支持的类型转换器:
类型转换器 作用
缺省 字符串,不能有斜杠(/)
int: 整型
float: 浮点型
path: 字符串,可以有斜杠(/)
3.多 URL 的路由匹配
为多个url访问地址匹配同一个视图函数
@app.route('/地址1')
@app.route('/地址2')
....
def index():
pass
练习:
当访问路径时以下任何一个的时候
localhost:5000
localhost:5000/index
localhost:5000/数字
localhost:5000/index/数字
将程序交给index()视图处理函数
判断路由中到低有没有数字传递进来
如果有:
响应:您当前看的页数为:xxx
如果没有
响应:您当前看的页数为:1
3.路由中设置HTTP请求方法
在Flask中默认只能接收get请求,无法接收post请求
在Flask中允许设定可以接收的请求方式,
如果请求方式不匹配的话,会响应回405(Method Not Allowed)

@app.route('/xxx',methods=['POST','GET'])
def xxx():
该函数既能接收post请求也能接收get请求
4.URL的反向解析
正向解析:程序自动解析,根据@app.route()中的访问路径,来匹配处理函数
反向解析:通过视图处理函数的名称自动生成对应的访问路径

在Flask中要实现反向解析:
url_for(funName,args)
funName:要生成地址的函数名
args:该地址中需要的参数

6.模板 - Templates
1.什么是模板
模板,在Flask中就是允许响应给用户看的网页
在模板中,允许嵌入动态的内容
模板最终也会被解析成字符串再响应给客户端,这一过程称为"渲染"

Flask中,模板是依赖于Jinja2的模板系统
http://jinja.pocoo.org/
2.模板的设置
默认情况下,Flask会在程序目录中搜索一个 templates 的目录
作为模板的存放目录
3.模板的渲染
作用:在视图中,将模板文件(xx.html)渲染成字符串之后,再响应给浏览器
语法:
from flask import render_template
render_template('xxx.html')
参数:要渲染的模板
返回值:该模板中的字符串内容

传递变量到模板中
render_template('xxx.html',变量=值,变量=值,...)
在模板中获取变量的值
{{变量名}}