潭州课堂25班:Ph201805201 tornado 项目 第六课 用户和图片分享的集成(课堂笔记)
tornado 相关说明
改善图片上传功能 ,生成唯一的 ID ,与路径拼接,生成 URL,
这里引用 uuid 的 python 库
在 photo.py 中创建个类,用来 辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库
把用户上传图片,生成缩略图,URL,保存信息到数据库放进一个类里,
class UploadImg:
"""
辅助用户上传的图片,生成相关缩略图,记录图片相关 URL ,并保存到数据库
"""
upload_dir = 'uploads'
thumb_dir = 'thumb'
size = (200,200) def __init__(self, old_name, static_path):
self.old_name = old_name
self.static_path = static_path
self.name = self.get_new_name() def get_new_name(self):
'''
生成一个唯一的字符串,用来做图片保存的字句
:return:
'''
# 拿到图片名的后缀
_, ext = os.path.splitext(self.old_name)
# 返回 16 位字符串, 生成新名字
return uuid.uuid4().hex + ext @property
def upload_url(self):
'''
用来保存图片相对路径的 url
:return:
'''
return os.path.join(self.upload_dir, self.name) @property
def upload_path(self):
'''
保存图片的文件路径
:return:
'''
return os.path.join(self.static_path, self.upload_url) def save_upload(self, content):
"""图片上传,保存"""
save_to = self.upload_path
with open(self.upload_path, 'wb') as fh:
# 把文件内容写到指定文件路径中
fh.write(content) @property
def thumb_url(self):
'''
生成用来保存缩略图相关路径的 url
:return: '''
_, ext = os.path.splitext(self.old_name)
thumb_name = '{}_{}X{}{}'.format(self.name, self.size[0], self.size[1], ext)
return os.path.join(self.upload_dir,
self.thumb_dir,
thumb_name) def save_thumb(self):
"""生成缩略图"""
# PIL 要操作的文件路径,
im = Image.open(self.upload_path)
# 缩略图生成
im.thumbnail(self.size)
# 保存缩略图
# 分离文件名和扩展名 im.save(os.path.join(self.static_path, self.thumb_url))
潭州课堂25班:Ph201805201 tornado 项目 第六课 用户和图片分享的集成(课堂笔记)的更多相关文章
- 潭州课堂25班:Ph201805201 django 项目 第十七课 用户登录,登出实现 (课堂笔记)
登录,校验: 1,判断用户名输入是否为空, 2,判断用户名密码是否匹配, 3,记住我的功能,:将用户信息记到 session 中 请求方式: POST 在视图中: # 1,创建类# 2,获取前台参数# ...
- 潭州课堂25班:Ph201805201 tornado 项目 第八课 增加喜欢功能(课堂笔记)
tornado 相关说明 新增一个页面,用来做图片收藏, 还要在 account.py 创建一个数据库表,记录用户喜欢的图片,哪些图片用户疯狂传奇 cd 到 项目目录下,执行数据库更新 alembic ...
- 潭州课堂25班:Ph201805201 tornado 项目 第七课 界面美化和静态文件处理(课堂笔记)
tornado 相关说明 使用 Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 美化项目 twittel 的开源项目, 在 static 目录下 ...
- 潭州课堂25班:Ph201805201 tornado 项目 第五课 增加用户系统-用户中心(课堂笔记)
tornado 相关说明 在 users 表中创建记录,做测试 在项目根目录下创建 test.py # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/27 ...
- 潭州课堂25班:Ph201805201 tornado 项目 第四课 增加用户注册登录(课堂笔记)
tornado 相关说明 在 handlers 中创建个 auth.py 用来做用户登录,在这文件中创建个类,并逐步完善 在 tornado 中创建 login.html 文件,是个登录页面 {% e ...
- 潭州课堂25班:Ph201805201 tornado 项目 第十一课 项目改进和优化(课堂笔记)
使用 Bootstrap 前端框架 可以在 bootCDN 这里找 jquery ,poppe.js 文件 当聊天室发来一第图片链接时,自动保存图片到服务器,并保存相关信息到数据库,系统向该用户发出 ...
- 潭州课堂25班:Ph201805201 tornado 项目 第十课 深入应用异步和协程(课堂笔记)
tornado 相关说明 需求: 增加 /save 的 handler,实现异步保存指定 URL 图片的功能 从网页上得到一张图片地址,由这个地址将图片保存到服务器,并将相关数据保存到数据库 impo ...
- 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)
tornado 相关说明 f增加图片上传功能, 在 main.py ,文件中创建个 UploadHandler 类,用来处理图片上传 上传图片之前,要先渲染这个页面,所以定个 get 方法,把这个页 ...
- 潭州课堂25班:Ph201805201 django 项目 第二十一课 文章主页 新闻列表页面功能 (课堂笔记)
新闻列表页功能 1.分析 业务处理流程: 判断前端传的标签分类id是否为空,是否为整数.是否超过范围 判断前端传的当前文章页数是否为空,是否为整数.是否超过范围 请求方法:GET url定义:/new ...
随机推荐
- 【洛谷P1134 阶乘问题】
[传送门] #include<bits/stdc++.h> using namespace std; int main() { ; cin>>a; ;i<=a;i++) ...
- uImage
linux内核经过编译后会生成一个ELF格式的可执行程序,叫vmlinux或vmlinuz,是原始的未经任何处理加工的原版内核ELF文件:嵌入式系统烧录的一般不是这个vmlinuz/vmlinux,而 ...
- MySQL5.7.23解压版安装教程
每次找安装教程太麻烦,因此给自己备份一下步骤,方便以后查看.解压版下载地址https://dev.mysql.com/downloads/mysql/,详细图解如下: 1.根据自己需求,选择适合自己的 ...
- CMDB服务器管理系统【s5day90】:API构造可插拔式插件逻辑
1.服务器端目录结构: 1.__init__.py from django.conf import settings from repository import models import impo ...
- DQL用户、权限管理(mysql8.0)
DQL用户.权限管理(mysql8.0) 查看所有的用户: use mysql; -- 使用mysql数据库 select * from user; -- 查询user表中的全部信息,也就是用户 创建 ...
- latex beamer 添加页码
导言中加 \setbeamertemplate{footline}[frame number]
- ArcGis汇总篇
ArcGis-javascript-API下载 bigemap.太乐地图 可下载地图文件 用arcgis for js 可以河流流域水质图 ArcGis导出shp文件(dbf.prj.sbn.sbx. ...
- webpack 代码优化压缩方法
在配置基于webpack的react单页面脚手架时,公共依赖库代码打包至vender.js中,页面逻辑代码打包至app.js中,使用webpack-bundle-analyzer分析发现,两个js中包 ...
- shiro登录认证
新建maven文件create a simple project shiro.ini文件 [users] root=123456 log4j.properties log4j.rootLogger=I ...
- IIS短文件漏洞(搬运整理)
0x01. IIS短文件漏洞的由来 Microsoft IIS 短文件/文件夹名称信息泄漏最开始由Vulnerability Research Team(漏洞研究团队)的Soroush Dalili在 ...