Flask需掌握知识
1.创建新的flask项目
2.路由(正确配置路由 路由中的参数 路由传参 )
3.视图函数(渲染网页 获取数据 实现功能 跳转页面/接口/网址 )
4.模型 (创建mysql表 设置表关联属性 迁移数据库)
5.蓝图(正确使用蓝图)
Flas框架
from flask import Flask
#注册flask项目app
# —name— 相当于 —self—代表自己本身
app = Flask(__name__)
app.config["SECRET_KEY"] = 'TPmi4aLWRbyVq8zu9v82dWYW1'
#连接数据库
app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:123456@127.0.0.1:3306/yya'
#动态追踪修改设置,如未设置只会提示警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#查询时会显示原始SQL语句
app.config['SQLALCHEMY_ECHO'] = True
#设置应用程序的 secret_key用于加密生成的 csrf_token 的值
app.secret_key = "#此处可以写随机字符串#"
# 路由传递参数 指定访问路径为 user
#路由传递的参数默认当做 string 处理,也可以指定参数的类型
#methods表示接收形式 默认为‘GET’
@app.route('/user/<int:user_id>',methods =['GET','POST'])
def user_info(user_id):
return 'hello %d' % user_id
# 直接从请求中取到请求方式并返回
if request.method == 'GET':
return request.method
if request.method == 'POST':
#获取GET传过来的参数‘username’
user_ = request.form.get('username')
#返回到指定html页面 (需要导render_template包)
return render_template('register.html')
#返回执行指定函数‘Index’(需要导redirect,url_for包)
return redirect(url_for('Index'))
#返回执行指定路径‘user’(需要导redirect包)
return redirect(('/user'))
#百度也可以
return redirect('http://www.baidu.com')
#向客户端返回Json数据使用 jsonify或json.dumps 生成一个 JSON 的响应(导包jsonify)
#不推荐使用 json.dumps 转成 JSON 字符串直接返回,因为返回的数据要符合 HTTP 协议规范
def user_info():
json_dict = {
"user_id": 10,
"user_name": "laowang"
}
return jsonify/json.dumps(json_dict)
#创建数据库的表
db = SQLAlchemy(app)
class Role(db.Model):
# 定义表名
__tablename__ = 'roles'
# 定义列对象
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
us = db.relationship('User', backref='role')
#main进程
if __name__ == '__main__':
#创建表:
db.create_all()
#删除表
db.drop_all()
#插入一条数据
ro1 = Role(name='admin')
db.session.add(ro1)
db.session.commit()
#一次插入多条数据
db.session.add_all([us1,us2,us3,us4,us5,us6,us7,us8,us9,us10])
db.session.commit()
#查询:
#----------------------------
filter_by #精确查询
#返回名字等于wang的所有人
Role.query.filter_by(name='wang').all()
filter #模糊查询
#返回名字结尾字符为g的所有数据。
Role.query.filter(Role.name.endswith('g')).all()
#first()返回查询到的第一个对象
Role.query.first()
#all()返回查询到的所有对象
Role.query.all()
#get():参数为主键,如果主键不存在没有返回内容
Role.query.get()
#逻辑非,返回名字不等于wang的所有数据
Role.query.filter(Role.name!='wang').all()
#not_ 相当于取反
from sqlalchemy import not_
Role.query.filter(not_(Role.name=='chen')).all()
#逻辑与,需要导入and,返回and()条件满足的所有数据
from sqlalchemy import and_
Role.query.filter(and_(Role.name!='wang',Role.email.endswith('163.com'))).all()
#逻辑或,需要导入or_
from sqlalchemy import or_
Role.query.filter(or_(Role.name!='wang',Role.email.endswith('163.com'))).all()
#查询数据后删除
user = Role.query.first()
db.session.delete(user)
db.session.commit()
User.query.all()
#更新数据
user = Role.query.first()
user.name = 'dong'
db.session.commit()
User.query.first()
使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”
蓝图
"""
"""
"""
flask 蓝图
什么是蓝图:
蓝图(blueprint):用于实现单个应用的视图、模板、静态文件的集合。
简单来说,蓝图就是一个存储操作路由映射方法的容器,主要用来实现客户端请求和URL相互关联的功能。 在Flask中,使用蓝图可以帮助我们实现模块化应用的功能。
flask中,将项目模块化,blueprint,是flask自带的一种开发模式,目的是为了方便开发大型的项目
怎么写蓝图:
导入蓝图包 from flask import Blueprint
实例化蓝图对象 blue = Blueprint('blue',__name__)
蓝图定义路由和视图 @blue.route('/')
最后需要在main函数下注册蓝图 app.register_blueprint(blue,url_prefix='/blue') url_prefix(动态url前缀)
"""
from flask import Flask,Blueprint
app = Flask(__name__)
blue = Blueprint('blue',__name__)
@app.route('/one')
def one():
return '我第一'
@blue.route('/two')
def two():
return '我第二'
@app.route('/three')
def three():
return '我第三'
@blue.route('/four')
def four():
return '我第四'
if __name__ == '__main__':
app.register_blueprint(blue,url_prefix='/blue')
app.run(debug=True)