Flask知识汇总

28 篇文章 0 订阅

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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值