栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django(二)精美博客搭建(6)个人资料

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django(二)精美博客搭建(6)个人资料

前言

上篇blog已经给大家讲述了个人头像本地存储的方法,但是一般情况下,由于本地存储的容量是有限的,基本上所有的公司的图片都会借助存储服务器,那本章我就给大家详细介绍一下七牛云存储方式

主要流程即:

--> 当用户点击【个人资料】菜单时,会链接进【个人资料】界面
--> 然后在这里,可以更改你的用户信息:姓名、手机号、头像
	头像上传,存储到七牛云

主要知识点:

  • 个人头像存取于【七牛云存储】

环境:

  • Pycharm
  • python3.6
  • mysql 5.7
  • django 2.0.13


一、七牛云存储使用介绍 1、七牛云注册及使用

七牛云注册地址:https://portal.qiniu.com/signup






2、七牛云上传资源文档介绍
  • 七牛云表单上传:https://developer.qiniu.com/kodo/1272/form-upload
  • Python SDK用法文档:https://developer.qiniu.com/kodo/1242/python


3、七牛云下载
pip install qiniu


二、新功能优化项目概览



三、user模块具体实现 1、urls.py
path('user_center1', user_center1, name='user_center1'),  # 云存储


2、utils.py
  • 工具类中,新增【上传图片:至七牛云存储】方法

def upload_img(store_obj, img_path):
    """
    上传图片:七牛云存储
    :param img_path:
    :param store_obj:
    :return:
    """
    # 1、去七牛云后台拿到你的密钥
    access_key = 'YDY-gnHSFf4sBq99JnjWEu3B9YqxeoKIYN5ssoNV'
    secret_key = 'lPHugocZtlqLTnWcRP-UZfEw5fxCa5p9I4KZsX_E'
    # 2、构建鉴权对象
    q = Auth(access_key, secret_key)
    # 要上传的空间名称
    bucket_name = 'mikasa-blog-space'
    # 上传后保存的文件名
    key = store_obj.name
    # 生成上传Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)
    # 要上传文件的本地路径
    locla_file = os.path.join(MEDIA_ROOT, img_path)
    ret, info = put_file(token, key, locla_file)  # 第三个参数是二进制流
    print(ret, info)
    # 拿到文件名
    file_name = ret.get('key')
    save_path = 'http://rdbjlwxgm.hn-bkt.clouddn.com/' + file_name
    return save_path
    

3、views.py
  • 新增一【用户中心】视图函数,直接在原本地存储方法那里copy一份过来,进行简单修改即可

# @login_required
def user_center1(request):
    """
    用户的个人中心1:个人头像存储七牛云
    :param request:
    :return:
    """
    # 拿到之前登录时存在session里面的username
    username = request.session['username']
    user = UserProfile.objects.filter(username=username).first()
    if request.method == 'GET':
        return render(request, 'user/user_center1.html', context={'user': user})
    else:
        # 获取到页面表单提交的属性
        username = request.POST.get('username')
        email = request.POST.get('email')
        mobile = request.POST.get('mobile')
        icon = request.FILES.get('icon')  # icon是内存存储对象
        user.username = username
        user.email = email
        user.mobile = mobile
        user.icon = icon
        user.save()

        # 将头像上传图片到七牛云
        # 注意:直接用user.icon会报错,因为他是一个ImageFieldFile对象,我们需要把他转为字符串
        sava_path = upload_img(icon, str(user.icon))  # 拿到七牛云存储的路径
        user.yunicon = sava_path
        # 保存
        user.save()
        return render(request, 'user/user_center1.html', context={'user': user})

4、models.py
  • 由于页面肯定是需要显示云存储的图片的,所以我们要将上传后的云存储路径保存到本地数据库,即在models中我们新增一字段yunicon
  • 注意:记得添加字段后,更新数据库表
yunicon = models.CharField(max_length=200, default='')  # 定义云存储字段



四、templates模块 1、在user文件下新建user_center1.html
  • 其实你可以不用新建,可以直接用之前的那个user_center.html就行,简单改下之前页面的取值,我这里只是方便做统一就都建了一份


2、base.html



五、项目启动及展示


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号