Flask 是一个使用 Python 语言编写的轻量 web 开发级框架 --"麻雀虽小, 五脏俱全".flash 两大核心: 基于 Werkzeug 的路由模块, 基于 Jinja2 模板引擎.
中文文档: http://docs.jinkan.org/docs/flask/
虚拟环境配置参照中文文档:
下面通过在代码里面介绍一些基础知识点:
- from flask import Flask
- from flask import request
- from flask import jsonify
- from flask import redirect, url_for
- from werkzeug.routing import BaseConverter
- app = Flask(__name__)
- # 1. 通过配置文件加载, 加载 debug
- # 需要在当前路径下新建 config.ini 文件 内容为 DEBUG=True
- # app.config.from_pyfile('config.ini')
- # 2. 从配置对象中加载
- # class Config(object):
- # DEBUG = True
- # app.config.from_object(Config)
- # 3. 直接在 run() 中传入参数 debug=True
- # 欢迎首页
- @app.route('/')
- def index():
- return "<h1>Hello friend<br>This is first Flask</h2>"
- # 带参数路由传递, 将输入的地址打印到页面
- # @app.route('/user/<name>')
- # def user(name):
- # return '<h2>hello,%s!!</h2>' % name
- # 设置浏览器地址栏传入参数类型
- # 浏览器输入默认为 str 类型 , 可做限定类型还有 float ,path(也是字符串类型)
- @app.route('/user/<int:user_id>')
- def user_info(user_id):
- return "user_info:%d" % user_id
- # 设置请求方法
- @app.route('/demo', methods=['GET','POST','HEAD'])
- def demo():
- return request.method
- # 返回 json 格式的数据
- @app.route('/demo01')
- def demo01():
- json_dict = {
- "user_id":12,
- "user_name":"董永",
- "age":20
- }
- return jsonify(json_dict)
- # 重定向
- @app.route('/demo02')
- def demo02():
- # 重定向到百度
- # return redirect('http://www.baidu.com')
- # 重定向到欢迎首页
- # return redirect('/')
- '''url_for 调用视图函数的 url'''
- return redirect(url_for('demo01'))
- # 自定义状态码
- @app.route('/demo03')
- def demo03():
- # print("自定义状态码")
- return '状态码',123
- # 正则匹配
- # 自定义转换器
- class ReConverter(BaseConverter):
- def __init__(self, url_map, *args):
- super(ReConverter, self).__init__(url_map)
- self.regex = args[0]
- # 将自定义转换器添加到转换器字典中, 并指定转换器使用名称
- app.url_map.converters['re'] = ReConverter
- # 通过调用自定义转换器, 过滤浏览器输入不合规参数
- @app.route('/user/<re("[0-9]{3}"):user_id>')
- def user_msg(user_id):
- return "正则限定后 user_id 是:%s" % user_id
- # url_for('') 调用视图函数的 url
- @app.route('/demo04')
- def demo04():
- return url_for('demo03')
- # 程序入口
- if __name__ == '__main__':
- app.run(debug=True)
来源: http://www.bubuko.com/infodetail-2604473.html