前言:
flask 轻量级框架 WEB框架
AJAX 在web中完成异步请求和响应
DJango 重量级的web框架
Python Web
1.静态网页和动态网页
1.静态网页:无法与服务器做动态交互的网页
2.动态网页:可以和服务器做动态交互的网页
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,视图处理用户的显示内容
C:Controller,控制器,用于与用户交互的部分内容(请求和响应)
4.Flask框架
1.什么是Flask框架
Flask是一个基于Python并且依赖于jinja2模板引擎和Werkzeug WSGI服务的一个微型框架
WSGI:WEB SERVER GATEWAY INTERFACE(WEB服务网管端口)
Flask是采用MTV的框架模式
2.安装Flask
1.查看已安装的Flask版本
在python的交互模式中:
1.import flask
没报错:已经安装Flask,可以继续查看版本
2.flask _version_
查看已安装的版本
2.安装Flask
sudo pip3 install flask
3.Flask初始化详情
见代码....
from flask import Falsk
app = Flask(__name__)
@app.route("/")
def index():
return "hello"
if __name__ == "__main__":
# app运行falsk的应用(启动flask的服务),默认在本机开启的端口是5000,port = 5555,
# 在制定端口启动程序端
# debug = True 将启动模式更改为调试模式(开发环境中推荐写Ture,生产环境中必须改为False)
app.run(debug=True)
5.Flask -路由(route)
1.什么是路由
客户端发送请求给web服务器,web服务器再将请求发送给Flask程序实例
程序实例需要知道每一个url请求地址,到python运行函数的一个映射.
处理url和函数之间的关系的程序就是"路由"
2.路由的体现
在flsak中,路由是通过@app.route 装饰器来表示的
1.路由的基本表示
@app.route('/')
def index():
return "xxx"
#localhost:5000/admin/lodin
@app.route('/admin/login')
def admain_login():
return "xxx"
2.带参数的路由
路由中可以携带参数表示不同的数据
http://localhost:5000/show/laowang
http://localhost:5000/show/wangwc
http://localhost:5000/show/laowang.gebi
1.基本带参路由
@app.route('/show/<name>')
def show(name):
name:表示的就是从地址栏上传递过来的数据
return 'xxx'
2.带多个路径的路由
http://localhost:5000/show/laowang/36
@app.route("/show/<name>/<age>")
def show(name,age):
return "xxx"
3.指定参数类型的路由
@app.route("/show/<name>/<int:age>")
def show(name,age):
name:字符串
age:整数
int:类型转换器
flask中支持的类型转换器:
类型转换器 作用
缺省 字符串,不能有斜杠("/")
int: 整型
float: 浮点型
path: 字符串,可以有斜杠('/')
3.多个URL的路由匹配
为多个访问地址匹配同一个视图处理函数
@app.route('/地址1')
@app.route('/地址2')
...
def index():
return "xxx"
4.路由中设置http的请求方法
flask路由也允许设置对应的请求方法(post/get),只有将匹配上请求方法的路径才能交给对应的视图处理函数去处理
所有的路由,默认只接受get请求
@app.route("/xxx/xxx",methods=["POST"])
def xxx:
pass
@app.route("/xxx/xxx",methods=["GET","POST"])
def xxx:
#该函数既能接受get请求也能接受post请求
pass
5.URL的反向解析
正向解析:
程序自动解析,根据@app.route()中的访问路径,来匹配处理函数
反向解析:
通过视图处理函数的名称自动生成对应的访问路径
在flask 中实现反向解析的话要使用:
url_for(funName,args)
funName:要生成的地址的函数名
args:该地址中需要的参数
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/index')
def index():
return "<h1>这是首页</h1>"
@app.route('/admin/login/form/show/<name>')
def show(name):
return "参数的值为:%s" % name
@app.route('/url')
def url():
#通过index()解析出对应的访问路径
url_index = url_for('index')
print("index():"+url_index)
#通过show(name)解析出对应的访问路径
url_show = url_for('show',name='wangwc')
print("show(name):"+url_show)
return "<a href='%s'>访问show(name)</a>" % url_show
if __name__ == "__main__":
app.run(debug=True)