Flask 轻量级的WEB框架
AJAX 在WEB中完成异步的请求和响应
Django 重量级的WEB框架
Python WEB
1.静态网页 和 动态网页
1.静态网页 : 无法与服务器进行数据交互的网页
2.动态网页 : 允许与服务器进行数据交互的网页
2.WEB 与 服务器
1.WEB : 网页(HTML,CSS,JS)
2.服务器(Web Server)
能够给用户提供服务的机器就是服务器
1.硬件 和 软件
硬件 : 一台计算机
软件 : 一个能够接收用户请求并个给出响应的程序
1.作用
1.存储WEB的信息
2.能够处理用户的请求(request)和响应(response)
3.执行服务器端的处理程序
4.具备最基本的安全功能
2.服务器端的软件
1.APACHE
2.TOMCAT
3.IIS(Internet Information Service)
4.Nginx
3.框架
1.什么是框架
框架是一个为了解决开放性问题而存在的一种程序结构
框架的本身提供了最基本的功能
我们只需要在框架的基础功能上搭建自己的操作就可以了
2.Python web 框架
1.Flask - 轻量级
2.Webpy - 轻量级
3.Tornado - 异步框架
4.Django - 重量级
3.框架模式
1.MTV(Flask,Django)
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服务的一个微型框架(Micro Framework)
WSGI : Web Server Gateway Interface(WEB服务网关接口)
Flask是基于 MTV 框架模式开发出来的框架
2.安装Flask
1.查看已安装的Flask版本
在 python 的交互模式中
1.import flask
没报错 : 已经安装好了Flask,可以继续查看版本
报错 : 没安装Flask
2.flask.__version__
已安装Flask的情况下,查看安装的版本
2.安装Flask
sudo pip3 install flask
pip3 download flask
3.初始化Flask应用
见代码... ..
4.杀掉占用5000端口的进程
1.netstat -lptu
查看占用5000端口的进程ID
2.sudo kill -9 进程ID
将进程ID对应的程序杀掉
5.Flask - 路由(route)
1.什么是路由
处理url和函数之间的关系的程序就是"路由"
@app.route('/login')
def login():
pass
2.路由的体现
在Flask中,路由是通过@app.route装饰器来表示的
1.基本的路由体现
# http://localhost:5000/admin/login
@app.route('/admin/login')
def admin_login():
return "xxx"
2.带参数的路由
路由中可以携带参数来表示不同的数据
http://localhost:5000/show/wangwc
http://localhost:5000/show/gebilaowang
http://localhost:5000/show/chaogege
http://localhost:5000/show/xxx
1.基本带参路由
@app.route('/show/<name>')
def show(name):
# name 参数表示的就是由地址栏上传递进来的数据
pass
2.带多个参数的路由
多个参数使用 / 隔开,并继续使用 <> 来表示
@app.route('/show/<name>/<age>')
def show(name,age):
pass
3.指定参数类型的路由
使用 类型转换器 解决参数类型的问题
@app.route('/show/<name>/<int:age>')
def show():
name : 字符串类型的数据
age : 整数类型的数据
int:类型转换器
Flask中所支持的类型转换器
类型转换器 作用
缺省 字符串,不能有斜杠('/')
int: 整数
float: 浮点型
path: 字符串,允许有斜杠('/')
练习:
1.访问路径如下
http://localhost:5000/calc/数字1/数字2
2.根据以上的访问路径制定路由以及视图处理函数
3.在视图中,对两个数字进行相加,并响应在浏览器上
3.多 URL 的路由匹配
@app.route('/地址1')
@app.route('/地址2')
.... ....
def index():
return ""
3.路由中设置允许接收的HTTP请求方法
所有的路由默认只接受get请求,不接受post请求
@app.route('/xxx',methods=['POST','GET'])
@app.route('/xxx',methods=['POST'])
4.URL的反向解析
正向解析:程序自动解析,会根据访问路径(@app.route('xxx')),自动来匹配处理函数
反向解析:通过视图处理函数的名称自动生成对应的访问路径
在Flask中要实现反向解析的话,需要使用:
from flask import url_for
url_for(funName,args)
funName : 要生成地址所对应的函数名
args : 该地址中要用到的参数
from flask import Flask
#将当前运行的主程序构建成Flask应用,以便接收用户(request)的请求并给出响应(response)
app = Flask(__name__)
#@app.route() 定义Flask中的路由,就是访问路径,'/'表示的是整个网站的根路径
#index()表示的是匹配上路由之后的处理程序-视图函数,所有的视图必须要有一个return用于表示响应的内容
# @app.route('/')
# def index():
# print('这是输出在终端上的内容')
# return "This is my first flask demo"
#http://localhost:5000/login
@app.route('/login')
def login():
return "<h1>欢迎来到登录页面</h1>"
@app.route('/register')
def register():
return "欢迎来到注册页面"
#参数1:基本带参路由的体现
@app.route('/show/<name>')
def show(name):
return "传递进来的参数为:"+name
#参数2:带多个参数的路由体现
@app.route('/show1/<name>/<age>')
def show1(name,age):
return "姓名:%s,年龄:%s" % (name,age)
#参数3:使用类型转换器实现参数的类型转换
@app.route('/calc/<int:num1>/<int:num2>')
def calc(num1,num2):
#num1和num2全部都是整型的
return "%d+%d=%d" % (num1,num2,num1+num2)
#定义多url的路由匹配
@app.route('/')
@app.route('/index')
@app.route('/<int:page>')
@app.route('/index/<int:page>')
def index_views(page=None):
if page is None:
page = 1
# print("您当前看的页数为:" , page)
return "您当前看的页数为:%d" % page
@app.route('/post',methods=['POST','GET'])
def post():
return "该方法允许接收get和post请求"
if __name__ == "__main__":
#运行Flask应用(启动Flask服务),启动之后允许通过http://localhost:5000的方式来访问当前项目
app.run(debug=True)