1.安装pip install flask
安装终端解析:pip install flask-script
2.视图函数
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello Flask!'
if __name__ == '__main__'
app.run()
- 启动参数
app.run()里可以带的参数
debug = True
threaded = True
host = '0.0.0.0'
port = 5555
- 要是终端启动的话
from flask_script import Manager
manager = Manager(app)
if __name__=='__main__'
manager.run()
终端启动时可以带的参数
-? --help
-h --host
-p --port
-d --dubug
-r --reload
--threaded 多个app同时打开,多线程
--processes 多个视频一起下载,多进程
路由参数
1.路由末尾的'/'建议都加上,防止出现路由多敲'/'出现的问题
2.若需要路由参数,参数需要放在<>中,对应的视图函数需要同名的参数
3.路由参数可以指定多个,也可以指定类型
4.常用参数类型:str(默认)、int、float、path,使用时放在参数前面,使用':'与参数连接
5.path类型其实是str类型,只是将'/'作为普通字符处理罢了。
- 请求request
#request中存放了所有的HTTP请求信息
@app.route('/request/')
def req():
# 完整的路由地址
# return request.url
# 不包含GET参数的路由地址
# return request.base_url
# 只有协议主机和端口
# return request.host_url
# 只包含装饰器中的路由地址
# return request.path
# 请求方法的类型:GET、POST
# return request.method
# 客户端的IP
# return request.remote_addr
# args:GET参数;form:POST参数;values:GET和POST
# return request.args.get('uid', '默认值')
# headers:所有的请求头信息
return request.headers.get('User-Agent')
- 响应response
@app.route('/response/')
def response():
# 直接返回字符串
# return 'OK'
# 可以在返回时指定状态码,默认都是200
# return 'page not found', 404
# 先用专门的函数构造一个响应对象,可以指定内容及状态码等
resp = make_response('我是通过函数构造的响应', 404)
# 设置响应头信息
resp.headers['uid'] = 250
return resp
- 重定向redirct
@app.route('/old/')
def old():
# return '原来的数据'
# return redirect('/new/')
# 根据视图函数名反向构造路由地址,参数是视图函数名
# return url_for('new')
return redirect(url_for('new'))
@app.route('/new/')
def new():
return '新的数据'
- 反向构造url url_for
@app.route('/urlfor/')
def urlfor():
# 不带参数的路由
# return url_for('new')
# 可以构造带参的路由,多出来的参数以GET形式传递
# return url_for('user', uid=250, name='cuihua')
# 构造完整(带协议主机和端口)路由,可以进行外部跳转
# return url_for('user', uid=250, name='cuihua', _external=True)
# 构造蓝本中的路由时参数这样传递:'蓝本名.视图函数名'
return url_for('blue.login')
- 终止abort
@app.route('/abort/')
def err():
# 终止代码执行,其实是向系统抛出指定异常
# 系统捕获异常,按照统一的方案进行处理
abort(404)
return '正常'
- 定制错误显示
@app.errorhandler(404)
def page_not_found(e):
return '是不是搞错了大哥?'
- 注册蓝本
from user import user
# 注册蓝本,注册时可以再次设置先关参数,而且优先级较高
#第一个参数是蓝本中创建的实例化对象,关联该对象
app.register_blueprint(user, url_prefix='/u')
3.蓝本文件
user.py
#蓝本的使用
from flask import Blueprint,url_for
# 建一个蓝本实例:参数有蓝本名(唯一的),模板名,路由前缀
user = Blueprint('blue',__name__,url_prefix='/us')
# 路由通过实例自身的装饰器
@user.route('/login/')
def login():
# return '登录'
return url_for('.register')
@user.route('/register/')
def register():
return '注册'