Python Django框架单元测试之文件上传测试示例
作者:Lockeyi 发布时间:2022-02-26 23:50:51
标签:Python,Django,单元测试,文件上传
本文实例讲述了Python Django框架单元测试之文件上传测试。分享给大家供大家参考,具体如下:
Submitting files is a special case. To POST a file, you need only provide the file field name as a key, and a file handle to the file you wish to upload as a value. For example:
>>> c = Client()
>>> with open('test.jpg') as fp:
... c.post('/account/avatar_upload/',{'avatar':fp})
测试文件上传其实没有什么特殊的,只需要指定后端接受请求数据的对应键值即可
(The name avatar here is not relevant; use whatever name your file-processing code expects.)在这里avatar是关联的,对应着具体的后端处理程序代码,eg:
class Useravatar(View):
def __init__(self):
self.thumbnail_dir = os.path.join(STATIC_ROOT, 'avatar/thumbnails')
self.dest_dir = os.path.join(STATIC_ROOT, 'avatar/origin_imgs')
@method_decorator(login_required)
def post(self, request):
nt_id = request.session.get('user_id', 'default')
user = User.objects.get(pk=nt_id) if User.objects.filter(pk=nt_id).exists() else None
avatarImg = request.FILES['avatar']
if not os.path.exists(self.dest_dir):
os.mkdir(self.dest_dir)
dest = os.path.join(self.dest_dir, nt_id+"_avatar.jpg")
with open(dest, "wb+") as destination:
for chunk in avatarImg.chunks():
destination.write(chunk)
if make_thumb(dest,self.thumbnail_dir):
avartaPath = os.path.join(STATIC_URL, 'avatar/thumbnails', nt_id + "_avatar.jpg")
else:
avartaPath = os.path.join(STATIC_URL, 'avatar/origin_imgs', nt_id + "_avatar.jpg")
User.objects.filter(nt_id=nt_id).update(avatar=avartaPath)
return render(request, 'profile.html', {'user': user})
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
来源:https://blog.csdn.net/Lockey23/article/details/80653091
0
投稿
猜你喜欢
- 1 引言这段时间在研究美团爬虫,用的是scrapy-redis分布式爬虫框架,奈何scrapy-redis与scrapy框架不同,默认只发送
- 本文实例讲述了Python面向对象类编写技术细节。分享给大家供大家参考,具体如下:类代码编写细节继续学习类、方法和继承。class语句以下是
- 视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。但是在实际应用中,并
- 关于iframe的使用iframe在同域时能自由操作iframe和父框架的内容(DOM),在跨域时可以实现页面跳转。<iframe i
- python编程中,我们在修改代码,遇到空格很多的情况下,我们要删除空格。本文小编整理了三种字符串去除空格的方法:方法一:使用字符串函数re
- base.html:{% extends "bootstrap/base.html" %}{% block styles
- Serializer序列化器定义Serializer1. 定义方法Django REST framework中的Serializer使用类来
- 第一步肯定是打上SQL SERVER最新的安全补丁.如果这一步都没有做好,那我们也没有继续下去的必要了。 第二步是修改默认的1433端口,并
- 我们经常使用动态创建 JavaScript 的方式来实现 JavaScript 文件的无阻塞(Non-blocking)、并行下载(Para
- 写接口case时,有时需要对cae做一些共性的操作,最典型的场景如:获取case执行时间、打印log等。有没有一种办法来集中处理共性操作从而
- 突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存
- 微信小程序终于可以支持npm导入第三方库了(https://developers.weixin.qq....),但是这种导入模式和使用模式有
- Mysql中'employee'表内容如下:# __Desc__ = 从数据库中导出数据到excel数据表中import x
- 本文实例为大家分享了基于神经卷积网络的人脸识别,供大家参考,具体内容如下1.人脸识别整体设计方案客_服交互流程图:2.服务端代码展示sk =
- 前言Tree一直是大家熟知的组件,做一些大型的后台管理系统都会用到。使用树组件可以完整的展现其中的层级关系,并具有展开收起选择等交互功能。效
- 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的
- 如下所示:# 导入模块import win32guiwin = win32gui.FindWindow(None, u'张三'
- 数据库中IP地址数据该怎么存?或许你已经不止一次遇到过这类问题,怎么存?varchar(255)不就完事儿了?坦白说,在我经历的几个项目中,
- pytorch中训练完网络后,需要对学习的结果进行测试。官网上例程用的方法统统都是正确率,使用的是torch.eq()这个函数。但是为了更精
- 使用sqlplus连接Oracle首先以下操作均需要在oracle用户下执行,注意短横线 (su - oracle)推荐方式1.sqlplu