解决django FileFIELD的编码问题


Posted in Python onMarch 30, 2020

当获取FileField数据时会出现编码问题

在数据库里显示的是D:\python项目\wxmkczpy\uploadfile\QQ截图20190210180915.png

而取出后变成

D%3A/python%E9%A1%B9%E7%9B%AE/wxmkczpy/uploadfile/QQ%E6%88%AA%E5%9B%BE20190210180915.png

这是url编码

所以可以用urllib 的parse模块解决

from urllib import parse
 
# Create your tests here.
a = "D%3A/python%E9%A1%B9%E7%9B%AE/wxmkczpy/uploadfile/QQ%E6%88%AA%E5%9B%BE20190210180915.png"
str3 = parse.unquote(a) #解码字符串
print(str3)

"C:\Program Files\Python36\python.exe" D:/python项目/wxmkczpy/wechat_app/tests.py
D:/python项目/wxmkczpy/uploadfile/QQ截图20190210180915.png

补充知识:Django中FilePathField字段的使用

class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])

一个 CharField ,内容只限于文件系统内特定目录下的文件名。有三个参数, 其中第一个是 必需的:

FilePathField.path

必填。这个FilePathField 应该得到其选择的目录的绝对文件系统路径。例如: "/home/images".

FilePathField.match

可选的.FilePathField 将会作为一个正则表达式来匹配文件名。但请注意正则表达式将将被作用于基本文件名,而不是完整路径。例如: "foo.*.txt$", 将会匹配到一个名叫 foo23.txt 的文件,但不匹配到 bar.txt 或者 foo23.png.

FilePathField.recursive

可选的.True 或 False.默认是False.声明是否包含所有子目录的路径

FilePathField.allow_files

可选的.True 或 False.默认是True.声明是否包含指定位置的文件。该参数或allow_folders 中必须有一个为 True.

FilePathField.allow_folders

是可选的.输入 True 或者 False.默认值为 False.声明是否包含指定位置的文件夹。该参数或 allow_files 中必须有一个为 True.

当然,这些参数可以同时使用。

有一点需要提醒的是 match只匹配基本文件名(base filename), 而不是整个文件路径(full path). 例如:

FilePathField(path="/home/images", match="foo.*", recursive=True)

...将匹配/home/images/foo.png而不是/home/images/foo/bar.png 因为只允许匹配 基本文件名(foo.png 和 bar.png).

FilePathField实例被创建在您的数据库为varchar列默认最大长度为 100 个字符。作为与其他字段,您可以更改使用的max_length最大长度。

大多数网站在插入图片时一般都是这样处理的:

上传大尺寸图时,自动生成一张缩略图;网页中插入缩略图,并把地址指向大尺寸的图。

所以在Django中,我这样定义主要字段:

title = models.CharField(max_length = 120)
img = models.ImageField(upload_to = 'screenshots')
thumb = models.FilePathField(path = 'screenshots/thumb')

为什么thumb不是ImageFiled呢?因为考虑到Admin中上传的是大图,而缩略图不是上传,而是自动生成的。所以在这样写。具体的处理是(假设MEDIA_ROOT为/tmp,MEDIA_URL为http://localhost/media/:

上传图片(test.jpg)至MEDIA_ROOT/screenshots,此时img的属性是:

img.name = screenshots/test.jpg, img.path = /tmp/screenshots/test.jpg, img.url = http://localhost/media/screenshots/test.jpg

判断图片大小是否需要做缩略图,如果不需要,直接复制img.path到thumb,否则,生成一张缩略图(以test-thumb.jpg命名)保存在screenshots/thumb下。

在网页中插入图片时,就可以简单地用

<a href="{% object.img.url %}" rel="external nofollow" ><img title="{% object.title %}" src="{% object.thumb %}" alt="{% object.title %}"></a>

来表示了。object表示一个ScreenShot。

以上这篇解决django FileFIELD的编码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pymssql数据库操作MSSQL2005实例分析
May 25 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
python实现数据导出到excel的示例--普通格式
May 03 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
django query模块
Apr 20 Python
python制作填词游戏步骤详解
May 05 Python
python em算法的实现
Oct 03 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
Python基础详解之描述符
Apr 28 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 #Python
Django 删除upload_to文件的步骤
Mar 30 #Python
python with语句的原理与用法详解
Mar 30 #Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 #Python
Python进程的通信Queue、Pipe实例分析
Mar 30 #Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 #Python
django 扩展user用户字段inlines方式
Mar 30 #Python
You might like
PHP 中执行系统外部命令
2006/10/09 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php解析json数据实例
2014/08/19 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php生成动态验证码gif图片
2015/10/19 PHP
javascript 写类方式之一
2009/07/05 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
JS绘制生成花瓣效果的方法
2015/08/05 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
微信小程序模版渲染详解
2018/01/26 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
python动态进度条的实现代码
2019/07/03 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python 一维二维插值实例
2020/04/22 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
统计专业自荐书
2014/07/06 职场文书
党员三严三实心得体会
2014/10/13 职场文书
导游词格式
2015/02/13 职场文书
观后感的写法
2015/06/19 职场文书
决心书格式范文
2015/09/23 职场文书
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript