Flask - 相册

定义一个相册表

# 相册表
class Photo(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    photo_name = db.Column(db.String(50), nullable=False)
    photo_datetime = db.Column(db.DateTime, default=datetime.now)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __str__(self):
        return self.photo_name

使用七牛云完成相册云存储

  • 安装七牛云 : pip install qiniu

把相册上传封装成一个工具类

utils.py

import random
import qiniu.config
from qiniu import Auth, put_file, etag, put_data


# 七牛上传
def upload_qiniu(filestorage):
    # 需要填写你的 Access Key 和 Secret Key
    access_key = ''
    secret_key = ''
    # 构建鉴权对象
    q = Auth(access_key, secret_key)
    # 要上传的空间
    bucket_name = 'flaskblog-2021'
    # 上传后保存的文件名
    filename = filestorage.filename
    # 拼接一个随机数
    ran = random.randint(1, 1000)
    name = filename.rsplit('.')[0] + '_' + str(ran) + '.' + filename.rsplit('.')[-1]
    key = name
    # 生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)
    ret, info = put_data(token, key, filestorage.read())
    return ret, info

完善我的相册功能

# 相册
@user_bp.route('/myphoto')
def myphoto():
    # 分页
    photos = Photo.query.paginate(page=1, per_page=3)
    return render_template('user/myphoto.html', photos=photos)

相册删除

center.js

 //相册图片的删除
    $('.photo-del').click(function () {
        console.log('--->');
        flag = confirm('确定删除此图片吗?');
        if (flag) {
            //获取属性值tag,tag属性的是就是图片的主键
            let pid = $(this).attr('tag');
            //1.ajax, 2. location.href
            location.href = '/user/photo_del?pid=' + pid;
        }
    });

views.py

# 相册删除
@user_bp.route('/photo_del')
def photo_del():
    pid = request.args.get('pid')
    photo = Photo.query.get(pid)
    filename = photo.photo_name
    info = delete_qiniu(filename)
    if info.status_code == 200:
        db.session.delete(photo)
        db.session.commit()
        return redirect(url_for('user.center'))
    else:
        return render_template('500.html', err_msg='删除照片失败')
  • 相册删除工具类
    utils.py
# 删除
def delete_qiniu(filename):
    access_key = ''
    secret_key = ''
    # 初始化Auth状态
    q = Auth(access_key, secret_key)
    # 初始化BucketManager
    bucket = BucketManager(q)
    # 你要测试的空间, 并且这个key在你空间中存在
    bucket_name = 'flaskblog-2021'
    key = filename
    # 删除bucket_name 中的文件 key
    ret, info = bucket.delete(bucket_name, key)
    return info
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值