Flask 入门

Flask 是一个轻量级框架,也是Python三大框架之一,Flask框架比较简单适合初学者学习。

 

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL

 

其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。

 

Flask 是python三大web框架之一,比之其他两大框架django和tornado而言,它更加的轻量化,开发效率更高,是入门web框架的首选。

 

同类的python框架还有 bottle  web.py 

 

Flask常用扩展包:

Flask-SQLalchemy:操作数据库;

Flask-script:插入脚本;

Flask-migrate:管理迁移数据库;

Flask-Session:Session存储方式指定;

Flask-WTF:表单;

Flask-Mail:邮件;

Flask-Bable:提供国际化和本地化支持,翻译;

Flask-Login:认证用户状态;

Flask-OpenID:认证;

Flask-RESTful:开发REST API的工具;

Flask-Bootstrap:集成前端Twitter Bootstrap框架;

Flask-Moment:本地化日期和时间;

Flask-Admin:简单而可扩展的管理接口的框架

 

 https://www.cnblogs.com/Niuxingyu/p/10139709.html 内有python web三大框架的简单介绍

 

终端下载插件命令  pip install Flask

 

建立Flask对象

 

使用Flask路由器,指定网址和控制器
 
 '/‘ 代表主页
@为装饰器
 
 
 
 使用程序入口,将flask应用启动
app.run(debug=True)  
 (默认为False。False时(冷启动),如果py文件更改后需要重启服务才能更新页面。如果为True时(热启动),每次更新py文件会自动更新页面。)

 

 

给网址增加参数功能,使用<变量名称>,函数方法要和路由器定义的参数同步(返回值用的是格式化输出)
@app.route('/hello/<id>/<name>')
def hello(id, name):
    print(id)
    return "hello"+"你是参数是%s,%s" % (id, name)

 

 

使用重定向模块来进行跳转
# 导包,flask,导入flask里的重定向模块redirect
from flask import Flask, redirect

@app.route("/1")
def reurl():
    # 返回用redirect返回一个调转网址
    return redirect("/")

 

 

使用url_for方法来实现简易的站内跳转,参数指定路由方法名称
导包,flask,导入flask里的重定向模块redirect,url_for模块,
from flask import Flask, redirect, url_for
def reurl_in(): # 返回用redirect跳转一个网址再用url_for指定一个站内方法名称 return redirect(url_for('hello'))

 

 


 

Flask框架中的四种请求勾子

用 before_request() 装饰的函数会在请求前调用,它没有参 数。用 after_request()装饰的函数在请求结束后调用,需要 传入响应。它们必须返回那个响应对象或是不同的响应对象。但当异常抛出时,它们 不一定会被执行,这时可以使用teardown_request() 装饰器, 它装饰的函数将在响应构造后执行,并不允许修改请求,返回的值会被忽略。如果在 请求已经被处理的时候抛出异常,它会被传递到每个函数,否则会传入一个 None 。

 

 

1.在发生第一次请求之前调用 before_first_request 方法

# 装饰器后跟的是方法
@app.before_first_request
def before_first_request():
    print("这是第一次请求之前调用的方法")

 

 

2.在每一次请求之前调用
@app.before_request
def before_request():
    print("每一次调用")

 

3.在请求之后调用的方法,调用之后必须传相应参数,然后将相应内容返回
@app.after_request
def after_request(response):
    print("请求之后调用")
    print(response)
    return response

4.在请求之后,调用服务器出现的错误信息
@app.teardown_request
def teardown_request(e):
    print("服务器出现的错误是 %s" % str(e))
 
 
 
 
 
使用jsonify模块来让网页直接显示 json数据
# 导包,flask,导入flask里的重定向模块,url_for站内跳转,jsonify json强转
from flask import Flask, redirect, url_for, jsonify

@app.route('/json')
def re_json():
    # 定义好数据格式
    json_dict = {'id': 10, 'title': "flask学习", 'content': "jsonify强转"}
    # 使用jsonify来把定义好数据的数据转换成json格式,并用return返回
    return jsonify(json_dict)

 

posted @ 2018-12-18 19:11  TheoldmanPickgarbage  阅读(231)  评论(0编辑  收藏  举报