Flask(四)——用户注册与数据查询

用户注册

将页面中的用户注册数据

@app.route('/login', methods=['GET','POST'])
if request.method == 'POST':
        username = request.form.get('username')#获取用户名
        password = request.form.get('password')#获取密码
        repassword = request.form.get('repassword')#获取再输一次密码
        phone = request.form.get('phone')#获取电话
        if password == repassword:       #比对密码与再输一次密码
            # 与模型结合
            # 1、找到模型类并创建对象
            user = User()  #from  apps.User.model import User 
            # 2、给对象的属性赋值
            user.username = username
            user.password = password
            user.phone = phone
            # 添加
            # 3、将user对象添加到session中(类似缓存)
            db.session.add(user)
            # 4、提交数据
            db.session.commit()
            return '用户注册成功'
        else:
            return '两次密码不一致'

    但是在开发中会进行密码加密通常会用到 hashlib 包用于数据加密,例如md5 sha1 sha256 sha512在采用这些方法时要注意在model中定义密码类型的长度。比如sha256 是64个长度,sha521是128个长度。
    hashlib加密是无法逆转的,当在登录的时候我们就只能将用户输入的密码进行加密后在同数据库中的加密密码进行比对,从而进行登录。

import    hashlib

msg = 'hello world'

sha1 = hashlib.sha1(msg.encode('utf-8')).hexdigest()
print(sha1)

sha256 = hashlib.sha256(msg.encode('utf-8')).hexdigest()
print(sha256)

sha512 = hashlib.sha512(msg.encode('utf-8')).hexdigest()
print(sha512)

数据查询

总结:
1、User.query.all()       所有数据库中所有符合条件的数据
2、User.query.get()       一个 主键查询
3、User.query.filter()     条件查询
     如果要检索的字段是字符串(varchar,db.String):
        User.username.startswith(’’)
        User.username.endswith(’’)
        User.username.contains(’’)
        User.username.like(’’)
        User.username.in_([’ ‘,’ ‘,’ ‘])
        User.username == ‘zzz’
     如果要检索的字段是整型或者日期类型
        User.age.lt(18)
        User.rdatetime.gt(’…’)
        User.age.le(18)
        User.age.ge(18)
        User.age.between(15,30)
    多条件查询: and_ , or_ ,not_
    排序: order_by()
    获取指定数量: limit() offset()
4、User.query.filter_by()

1、模型类.query.all() ~ select * from user;

User.query.filter(User.username.endswith('z')).all()    select * from user where username like '%z'
User.query.filter(User.username.startswith('z')).all()   select * from user where username like 'z%'
User.query.filter(User.username.contains('z')).all()      select * from user where username like '%z%'

2、模型类.query.filter_by(字段名=值)~select * from user where 字段名=值;
     模型类.query.filter_by(字段名=值).first()~select * from user where 字段名=值 limit

   模型类.query.filter() 里面是布尔的条件   模型类.query.filter(模型名.字段名==值)
   模型类.query.filter_by()  里面是一个等值   模型类.query.filter_by(字段名 = 值)

    多条件查询
         from sqlalchemy import or_,and_,not_
         并且:and_ 获取: or_ 非: not_

user_list = User.query.filter(or_(User.username.like('z%')), User.username.contain('i')).all()
# select * from user where username like 'z%' or username like '%i%';

    排序:order_by

user_list = User.query.filter(User.username.contains('z')).order_by(-User.rdatetime).all()  #先筛选在进行排序
user_list = User.query.order_by(-user.id).all()  #对所有的进行排序
注意:order_by(参数)1、直接是字符串:'字段名'  但是不能倒序
    	2、填字段名:模型.字段  order_by(-模型.字段)    倒序
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日渐秃噜的小范

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值