Flask - 用户信息修改

文件上传

  • 上传的图片是 FileStorage
  • 属性 :
    • filename : 用户获取文件的名字
  • 方法 :
    • save(保存路径)

secure_filename

  • 转换为安全的文件名。
  • 示例:
>>> secure_filename("My cool movie.mov")
    'My_cool_movie.mov' 
>>> secure_filename("../../../etc/passwd")
    'etc_passwd'

配置头像的上传目录

settings.py

# 项目路径
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    # 静态文件夹路径
    STATIC_DIR = os.path.join(BASE_DIR, 'static')
    # 模板文件路径
    TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
    # 头像文件路径
    UPLOAD_ICON_DIR = os.path.join(STATIC_DIR, 'upload/icon')

用户修改

views.py

# 修改用户
@user_bp.route('/change', methods=['GET', 'POST'])
def user_change():
    if request.method == 'POST':
        username = request.form.get('username')
        phone = request.form.get('phone')
        email = request.form.get('email')
        # 获取头像, 使用request.files
        icon = request.files.get('icon')
        # 查询手机号码
        users = User.query.all()
        for user in users:
            if user.phone == phone:
                # 说明数据库以及存在此号码
                return render_template('user/center.html', user=g.user, msg='此号码已被注册')
        # 获取上传的图片的名字
        icon_name = icon.filename
        # 获取文件的扩展名
        suffix = icon_name.rsplit('.')[-1]
        if suffix in ALLOWED_EXTENSIONS:
            # 安全的文件名
            icon_name = secure_filename(icon_name)
            # 文件的上传路径
            file_path = os.path.join(Config.UPLOAD_ICON_DIR, icon_name)
            # 保存文件
            icon.save(file_path)
            user = g.user
            user.username = username
            user.phone = phone
            user.email = email
            # 数据库里的文件路径
            path = 'upload/icon/'
            user.icon = os.path.join(path, icon_name)
            db.session.add(user)
            db.session.commit()
            return redirect(url_for('user.center'))
        else:
            return render_template('user/center.html', user=g.user, image_msg='扩展名必须是:jpg,png,gif,bmp')
    return render_template('user/center.html', user=g.user)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值