Python_Flask系列_1.基础
前言
一、Flask是什么?
-
WSGI 工具箱采用 Werkzeug(路由模块) ,模板引擎则使用 Jinja2
,Flask框架的核心就是Werkzeug和Jinja2 -
Flask应该是最灵活的框架之一
-
Flask扩展包:
● Flask-SQLalchemy:操作数据库;
● Flask-migrate:管理迁移数据库;
● Flask-Mail:邮件;
● Flask-WTF:表单;
● Flask-script:插入脚本;
● Flask-Login:认证用户状态;
● Flask-RESTful:开发REST API的工具;
● Flask-Bootstrap:集成前端Twitter Bootstrap框架;
● Flask-Moment:本地化日期和时间;
参考学习链接
1.豆约翰flask系列教程
2.flask中文教程
3.flask_W3cschool
4.flask_语雀
二、Flask有关知识
1.常用的命令行语句
pip install -r requirements.txt #安装依赖包
pip freeze > requirements.txt #生成依赖包
app.secret_key = 'aaaa'# set the secret key
#数据库
flask db update
flask db migrate
python app.py db init#这个命令会创建migrations文件夹
python app.py db migrate -m 'initial migration'#创建自动迁移脚本
python database.py db upgrade#更新数据库
#回退数据库
python app.py db history查看历史版本的具体版本号
python app.py db downgrade 版本号
flask run#运行
set FLASK_APP=app.py
2.特殊模块
邮箱
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
#配置邮件:服务器/端口/传输层安全协议/邮箱名/密码
app.config.update(
DEBUG = True,
MAIL_SERVER='smtp.qq.com',
MAIL_PROT=465,
MAIL_USE_TLS = True,
MAIL_USERNAME = '2632499409@qq.com',
MAIL_PASSWORD = 'aaa',
)
mail = Mail(app)
@app.route('/')
def index():
# sender 发送方,recipients 接收方列表
msg = Message("This is a test ",sender='2632499409@qq.com', recipients=['shengjun@itcast.cn','2632499409@qq.com'])
#邮件内容
msg.body = "Flask test mail"
#发送邮件
mail.send(msg)
print ("Mail sent")
return "Sent Succeed"
if __name__ == "__main__":
app.run()
什么是蓝图?
蓝图:用于实现单个应用的视图、模板、静态文件的集合。
蓝图就是模块化处理的类。
简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。
蓝图的使用:
一、创建蓝图对象。
Blueprint必须指定两个参数,admin表示蓝图的名称,__name__表示蓝图所在模块
admin = Blueprint('admin',__name__)
二、注册蓝图路由。
@admin.route('/')
def admin_index():
return 'admin_index'
三、在程序实例中注册该蓝图。
app.register_blueprint(admin,url_prefix='/admin')
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
@app.route('/list')
def list():
return 'list'
@app.route('/detail')
def detail():
return 'detail'
@app.route('/')
def admin_home():
return 'admin_home'
@app.route('/new')
def new():
return 'new'
@app.route('/edit')
def edit():
return 'edit'
# 文件app.py
from flask import Flask
# 导入admin中的内容
from admin import *
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
@app.route('/list')
def list():
return 'list'
@app.route('/detail')
def detail():
return 'detail'
if __name__ == '__main__':
app.run()
# 文件admin.py
from app import app
@app.route('/')
def admin_home():
return 'admin_home'
@app.route('/new')
def new():
return 'new'
@app.route('/edit')
def edit():
return 'edit'
总结
不负有心人