flask快速入门常用插件(草稿)
Flask快速入门,知识整理
扩展列表:http://flask.pocoo.org/extensions/
扩展名 | 功能 |
---|---|
Flask-SQLAlchemy | 操作数据库 |
Flask-Script | 插入脚本 |
Flask-Migrate | 管理迁移数据库 |
Flask-Session | Session 存储方式指定 |
Flask-WTF | 表单 |
Flask-Mail | 邮件 |
Flask-Babel | 提供国际化和本地化支持,翻译 |
Flask-Login | 认证用户状态 |
Flask-OpenID | 认证 |
Flask-RESTful | 开发 REST API 的工具 |
Flask-Bootstrap | 集成前端 Twitter Bootstrap 框架 |
Flask-Moment | 本地化日期和时间 |
Flask-Admin | 简单而可扩展的管理接口的框架 |
Flask:用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。
Flask和Django对比:
1.Django大而全,提供一站式解决方案,MVT模式,有ORM模式、后台站点管理等功能。
2.Flask轻巧,简洁,可扩展性强(Flask最重要特点),
其核心: WSGI 工具箱采用 Werkzeug(路由模块)
模板引擎则使用 Jinja2
#coding=utf-8
from flask import Flask, make_response, current_app, request
from settings import Config
# 导入werkzeug的路由模块, 转换器
from werkzeug.routing import BaseConverter
# Flask接受一个参数name,参数指向程序所在模块
# __name__参数作用,是为了确认程序所在的位置
# Flask默认创建静态路由
# 默认参数是默认字符串,不能是int整值,不能传入python模块名
app = Flask(__name__)
# 配置对象可以导入配置文件,config配置对象,方法from_object,引入配置文件
app.config.from_object(Config)
# 自定义转换器
# 正则url作用:限制访问(不符合条件的),优化访问
class Regex(BaseConverter):
"""Base class for all converters"""
def __init__(self, map, *args):
super(Regex, self).__init__(map)
self.regex = args[0]
# 添加转换器映射
app.url_map.converters['re'] = Regex
# 优化访问路径,处理请求高效
# 使用访问对象,make_response,(响应对象)current_app,把指定的对象响应给浏览器
@app.route('/<re(".*"):filename>')
def demo5(filename):
if not filename:
filename == 'index.html'
else:
filename == 'html/' + filename
resp = make_response(current_app.send_static_file(filename))
return resp
@app.route('/re/<re("[a-z]{6}"):num>')
def demo4(num):
return 'laowang11:%s' % num
# 自定义转换器 Regex继承BaseConverter类
class Regex(BaseConverter):
regex = '[0-9]{4}'
# 添加转换器的映射
app.url_map.converters['re'] = Regex
@app.route('/<re:num>')
def demo3(num):
return 'langwang:%s' % num
# 状态保持:因为http协议的无状态,http使用TCP/IP协议
# web应用保持某种状态,cookie的本质是字典
#1 设置cookie
@app.route('/setcookie')
def demo6():
resp = make_response('set cookies success')
resp.set_cookie('user', 'python', max_age=300)
return resp
# 2获取cookie,request
@app.route('/getcookie')
def demo7():
resp = request.cookies.get('user')
return resp
# 定义视图
# route方法的实现是通过转换器,
# rule类存储的一条路由规则,
# Map存储所有路由规则,
# MapAdapter类负责匹配集体的url和视图
# 视图函数不能重名,路由可以从复,动态生成参数可以通过<>
# 动态生成参数,默认的数据类型str,兼容数值型,不包括浮点型
@app.route('/',methods=['POST','GET'])#请求方法post, get,
def demo():
return 'hello world'
@app.route('/<float:name>', methods=['POST', 'GET'])
def demo2(name):
return 'LAOWANG:%s' % name
# 启动服务器
# 当文件导入其他文件使用时,该表达式不成立, __name__==demo,
if __name__=='__main__':
# app.run(debug=True)开发环境debug=Ture开发区环境,代码有变动会自动更新,其他情况下,会内存泄漏
# 查看所有路由映射
print app.url_map
app.run()