Python Django框架单元测试之文件上传测试示例

yipeiwu_com7年前Python基础

本文实例讲述了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程序设计有所帮助。

相关文章

Python Collatz序列实现过程解析

编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值。如果 number 是...

跟老齐学Python之网站的结构

跟老齐学Python之网站的结构

很早很早的时候,computer这个东西习惯于被称之为计算机,因为它的主要功能是完成一些科学计算的东西,我记得自己鼓捣它的时候,就是计算,根本就没有想到它有早一日还可以用来做别的。后来另...

如何在python中实现随机选择

这篇文章主要介绍了如何在python中实现随机选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 想从一个序列中随机抽取若干元素,或者...

Python的Flask框架标配模板引擎Jinja2的使用教程

Jinja2需要Python2.4以上的版本。 安装 按照Jinja有多种方式,你可以根据需要选择不同的按照方式。 使用easy_install 或pip: #sudo e...

Python实现代码统计工具

本文实例为大家分享了Python实现代码统计工具的具体代码,供大家参考,具体内容如下 思路:首先获取所有文件,然后统计每个文件中代码的行数,最后将行数相加. 实现的功能: 统计每个文件的...