一 什么是Flask
- Flask框架
Flask 是一个 web 框架。也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 wdb 应用程序可以使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。
Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架。这既有优点也有缺点,优点是框架很轻量,更新时依赖少,并且专注安全方面的 bug,缺点是,你不得不自己做更多的工作,或通过添加插件增加自己的依赖列表。 - Flask框架的依赖性
Flask 的依赖如下:
1). Werkzeug 一个 WSGI 工具包
Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口)。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
2). jinja2 模板引擎
使用模板你可以设置你的页面的基本布局,并提及哪个元素将发生变化。这种方式可以定义您的网页头部并在您的网站的所有页面使它保持一致,如果你需要改变网页头部,你只需要更新一个地方。
使用模板引擎创建/更新/维护你的应用会节约你很多时间
二 Flask框架的基本结构
- 首先导入Flask类
from flask import Flask
- 实例化一个Flask对象
app = Flask(__name__)
其中:__name__是模块的名称或者包的名称
作用:根据这个参数确定flask应用的路径, 从而快速查找模板和html文件的默认路径
模块就是python文件; 包就是目录(跟普通目录多加一个__init __. py)
- 设置基本路由:通过路由绑定一个视图函数
@app.route('/')
def index():
return "<h1>hello world</h1>"
其中: @app.route(’/’): 告诉Flask哪个URL才能出发对应的函数, 又称为路由
对应定义了一个视图函数, 也就是返回给用户浏览器显示的内容
- 运行Flask应用, 可以指定ip和端口
app.run()
当然也可以指定IP和端口
让指定的IP号访问:
app.run('172.25.254.69',9000)
也可以让本机所有的IP号访问:
app.run('0.0.0.0',9000)
- 结合在一起,就是Flask最基本的框架
from flask import Flask
fla=Flask(__name__)
@fla.route('/')
def index():
return 'hello'
fla.run()
运行结果:
三 路由与变量规则
常见路由规则:
1). url的一部分可以标记为变量<变量名>
2). flask中路由里面的变量常见类型:int,string,float,path,uuid
from flask import Flask
fla=Flask(__name__)
@fla.route('/<int:id>/comments/')
def index(id):
return '%s index' %(id)
@fla.route('/welcome/<string:user>/')
def welcome(user):
return 'welcome %s' %(user)
fla.run()
执行结果:
指定输入的形式,是字符串,是整形,还是其它
四 URL构建与反向URL
from flask import Flask, request, url_for
app = Flask(__name__)
@app.route('/welcome/<string:user>/')
def welcome(user):
return user + "用户, 欢迎来到westos"
@app.route('/path/')
def path():
print(request.headers)
print(request.method)
# url_for: 根据函数名, 反向生成url地址
print("用户正在访问url地址:%s" % (url_for(endpoint="welcome", user="westos")))
return "用户正在访问url地址:%s" % (url_for(endpoint="welcome", user="westos"))
app.run()
执行结果:
构建新的URL,访问该URL获得信息
注意:
1).通过 url_for ,根据函数名,反向构建URL
2).通过 request类,可以得到其头部信息或者访问模式,是 get 或者 post ,等
五 Flask框架的一些问题
前面写过一个简单的HTML页面:
包括(主页,登陆页和注册页)
现在通过Flask框架对其进行编辑,让代码更加的简短,让客户端提交的数据到达后台,进行数据处理
简单的判断:
1).用户登陆时的用户名与密码(看其用户名是否是root,密码是否是westos)
2).html页面的异常处理(弹出404报错页面)
from flask import Flask, request, render_template, redirect, url_for, abort
fla=Flask(__name__)
@fla.route('/')
def index():
return render_template('index.html')
@fla.route('/login/',methods=['GET','POST'])
def login():
if request.method == 'POST':
user=request.form['user']
passwd=request.form['passwd']
if user == 'root' and passwd == 'westos':
return redirect(url_for('index'))
else:
return render_template('login.html',message='用户名或者密码错误')
else:
return render_template('login.html')
@fla.errorhandler(404)
def not_found(e):
return render_template('404.html')
@fla.route('/user/<int:user_id>')
def user(user_id):
if 0<int(user_id)<=100:
return '欢迎访问: %s' %(user_id)
else:
abort(404)
fla.run