flask ORM增删查改CURD

增删查改CURD

本文章是通过学习《网易云python全栈工程师》课程的笔记

数据创建

user = User(field1 = value1, field2 = value2, …)
db.session.add(user)
db.session.commit( )

#获得用户列表
@app.route("/userlist", methods=['get', "post"])
def userList():
users = User.query.all()
return render_template("user/user_list.html" , users=users)
视图页面for循环用户

```python
{% for user in users %}
<tr>
<td>{{ user.username }}</td>
<td>{{ user.realname }}</td>
<td>{{ user.sex }}</td>
<td>{{ user.city }}</td>
<td>
<a href=" ">修改</a>
<a href=" ">删除</a>
</td>
</tr>
{% endfor %}

模板与识图准备

模板:
需要提供一个用户列表显示模板
路由:
提供一个访问路径
比如:@app.route("/userlist")
视图函数:
通过模型对象查询结果,并将结果赋给模板变量

例如:users = User.query.all()查看所有用户

D-delete删除记录
db.session.delete(记录对象)删除
单个删除:
use1=User.query.get(1)]
db.session.delete(user1)
db.session.commit()
即可将id=1的记录删除
批量删除:
users=User.query.all()
for循环要批量删除的用户
[db.session.delete(user)for user in users]
db.session.commit()

路由与视图函数准备

路由:
通常删除需要传递一个被删除对象的id
@app.route("/delete user/int:user_id")
视图函数
def deleteUser(user_id)
pass(删除语句)
记得要commit确定
return redirect(用户列表页)
#删除后返回用户列表页面

#根据用户id删除用户
@app.route("/user_delete/<int:user_id>")
def deleteUser(user_id):
user = User.query.get(user_id)
db.session.delete(user)
db.session.commit()
return redirect(url_for("userList"))

#redirect重定向回userList

U-update更新操作

通过模型类查询对象更新记录(U-更新记录)
比如:
use=db.query.get(1)
user1.password = ‘654321’
db.session.commit() 确认修改

模板:
修改页面需要的表单与注册页面的表单是一致的
但是需要使用用户当前信息填充表单
路由:
@app.route("/edit_user/int:user_id",methods=‘get’,‘Post’])
视图函数:
def request.method==‘POST’:
#执行修改
return……

#用户信息修改
@app.route("/useredit/<int:user_id>",methods=['get','post'])
def editUser(user_id):
user = User.query.get(user_id)
if request.method == "POST":
user.username = request.form['username']
user.realname = request.form['realname']
user.sex = request.form['sex']
user.mylike = "|".join(request.form.getlist('like'))
user.city = request.form['city']
user.intro = request.form['intro']
db.session.commit()
return redirect(url_for("userList"))
return render_template("user/edit_user.html",user=user)

**

条件检索

**

Model.query.<查询条件>.<查询方法>
@app.route("/userlist",methods=["get","post"])
def userList():
if request.method == "POST":
q = request.form['q']
condition = {request.form['field']:q}
#filter_by
# users = User.query.filter_by(**condition).all()
#like
if request.form['field'] == "realname":
condition = User.realname.like('%%%s%%' % q)
else:
condition = User.username.like('%%%s%%' % q)
if request.form['order'] == '1':
order = User.id.asc()
else:
order = User.id.desc()

users = User.query.filter(condition,User.sex==request.form['sex']).order_by(order).all()
else:
#users = User.query.all()

翻页

#分页操作
users = User.query.paginate(1,10)
return render_template("/user/user_list.html",users=users.items,pages=users.pages,total=users.total,pageLists=users.iter_pages())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值