flask 基础

Posted ln-xxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 基础相关的知识,希望对你有一定的参考价值。

flask基础知识

1蓝图

# 定义了一个 用户模块./用户蓝图!
from flask import Blueprint,render_template,request,session,redirect,url_for #
redirect ,url_for重定向跳转
users = Blueprint(‘users‘,__name__) #模块名/蓝图名叫users
@users.route(‘/‘) # 路由定义!
def index():
	return render_template(‘/index.html‘) # 跳转到模板!
@users.route(‘/register‘, methods=[‘GET‘, ‘POST‘]) # methods定义请求方法
	def register():
		if request.methods==‘GET‘:
			get功能
         else:
			post相关功能
# 导入蓝图
from apps.users import users #导入
from apps.books import books
app.register_blueprint(users, url_prefix="/") #注册用户蓝图,url_prefix=‘路由前缀‘
app.register_blueprint(books, url_prefix="/book") #注册用户蓝图,url_prefix=‘路由前缀‘

	## 2 路由和视图

? 。路由功能: 实现跳转传参!

? 。 视图

? 。 1接受从前端传过来的数据:接受数据

? 。 2 业务逻辑 (调用数据库判断数据是否合法!)

? 。 3 更具业务逻辑相应不同的页面 页面的跳转

# 1. 需要导入类
from flask import Blueprint,render_template,request,session,redirect,url_for #
redirect ,url_for重定向跳转
1. blueprint 蓝图
2. render_template: 跳转到模板
3. request: 请求对象
4. session:缓存
5. redirect和url_for 重定向
## 2. 路由定义
#@模块名.路由(‘/路由地址‘,访问方法=[‘GET‘,‘POST‘]) # Restful规范: delete,pull 修改请求!
@users.route(‘/register‘, methods=[‘GET‘, ‘POST‘]) #
def register():
	if request.method ==‘GET/POST/PUT/DElETE‘
# 3. 视图中获取get传参数
request.args.get(‘超链接name名‘) # http://IP地址:端口/id=xxx&name=xxx
# 4. 视图获取post传输数据
request.form.get(‘表单name名字‘) #
列表 = request.form.getlist(‘复选框name名‘) # 获取复选框值!爱好(打篮球,足球,游泳...)
for i in 列表:
    pass
# 5. 跳转传参数
# 返回 跳转到模板(‘模板名字‘,参数1=值1,参数2=值2,.....)
return
render_template(‘book_borrow_search.html‘,books=mybooks,reader_name=reader_name,reader
_id=reader.id)
# 重定向
return reredirect(‘/booklist‘) # 跳转到某个路由
return reredirect(url_for(‘view视图函数的名‘)) # 跳转到某个方法!

3 视图内容传输和模板展示

# 设置session
session["name"] = name
# 其他任意方法中获取session
id = session.get(‘user_id‘)
# 向模板中传输内容
return
render_template(‘book_borrow_search.html‘,books=mybooks,reader_name=reader_name,reader
_id=reader.id)
# 重定向不能传递参数
return redirect(‘/booklist?page=2‘)
# 页面展示
{{ 变量名 }}
{% for item in books %}
	{{ loop.index }} # loop.index 循环序号!
	{{item.name}}
	<td>{{ item.booktype.type_name }}</td> # 调用外键表中的内容!

4 orm数据库

非查询 db.session.xxx再提交

# 1. 增加
db.session.add(对象)--->db.session.commit()
# 2. 修改:先查,再改,再提交
obj1= 模型类名.query.get(id=id值) #get 根据id查
obj1.属性=值
db.session.commit()
# 3. 删除 先查再删
db.sesion.delete(obj) --->db.session.commit()
. 查询。模型类名。query.xxx
# 根据id查询
Book.query.get(id)
# 查询所有
Book.query.all()
# filter根据模型属性作为条件!
mybooks = BorrowBook.query.filter(BorrowBook.reader_id ==id, BorrowBook.restore_date
== None).all()
# filter_by 根据列名查!
mybooks = BorrowBook.query.filter_by(id >20,age>20).all()

flask 框架搭建

1。框架结构

技术图片

# 数据库迁移命令 ----------
python manage.py db init # 初始化
python manage.py db migrate #生成迁移文件
python manage.py db upgrade # 执行迁移文件

注意:迁移之前 model一定要被实例化过!(至少用过一次)

以上是关于flask 基础的主要内容,如果未能解决你的问题,请参考以下文章

12_关于flask中的宏

python flask 基础入门

Flask之模板之宏继承包含

flask基础1

flask基础之app初始化

flask基础知识