600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Django(二)精美博客搭建(6)个人资料_头像优化_存储七牛云

Django(二)精美博客搭建(6)个人资料_头像优化_存储七牛云

时间:2019-12-31 10:12:38

相关推荐

Django(二)精美博客搭建(6)个人资料_头像优化_存储七牛云

前言

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

主要流程即:

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

主要知识点:

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

环境:

Pycharmpython3.6mysql 5.7django 2.0.13

一、七牛云存储使用介绍

1、七牛云注册及使用

七牛云注册地址:/signup

2、七牛云上传资源文档介绍

七牛云表单上传:/kodo/1272/form-uploadPython SDK用法文档:/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-/' + file_namereturn save_path

3、views.py

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

# @login_requireddef user_center1(request):"""用户的个人中心1:个人头像存储七牛云:param request::return:"""# 拿到之前登录时存在session里面的usernameusername = 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 = usernameuser.email = emailuser.mobile = mobileuser.icon = iconuser.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

五、项目启动及展示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。