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 基础的主要内容,如果未能解决你的问题,请参考以下文章