图片上传首先要是设置settings.py文件(与静态文件设置类似)

MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'

1、需要用到imagekit软件
安装使用imagekit需要以下三步:
1)Install PIL or Pillow. (If you’re using an ImageField in Django, you should have already done this.)
2)pip install django-imagekit
3)Add 'imagekit' to your INSTALLED_APPS list in your project’s settings.py

2、编写models.py

from django.db import models
from imagekit.models import ProcessedImageField
from imagekit.processors import ResizeToFill

#上传图片后进行处理的
class Profile(models.Model):
avatar_thumbnail = ProcessedImageField(upload_to='uploaded', #图片上传后的目录会在主目录media(settings.py中设置)下自动创建
processors=[ResizeToFill(100, 50)], #值可以改,现在是100*50的缩略图,也可以是360*300的放大图
format='JPEG',
options={'quality': 60},storage=ImageStorage())
name = models.CharField(max_length=128)
def __str__(self):
return '%s' %(self.name)

3、views实现

#上传的图片经过处理后保存的
@csrf_exempt
def ProcessImg(request):
if request.method == 'POST':
if request.FILES.get('img'): #img为upload.html中的input标签名称
new_img = models.Profile(
avatar_thumbnail = request.FILES.get('img'),
name = request.FILES.get('img').name
)
# new_img = models.Upload_img(
# img = request.FILES.get('img'),
# name = request.FILES.get('img').name
# )
type_list = ['.jpg','.png','.gif','.webp']
#判断上传图片格式
if os.path.splitext(new_img.name)[1].lower() in type_list:
new_img.save()
return render(request,'blog1/processupload.html')

4、模板processupload.html(只写了上传功能的html代码)

{% block content %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input id="uploadimg" type="file" name="img" />
<button type="submit" onclick="submit_successful()">上传</button>
<p id="tip"></p>
<script>

function submit_successful()
{
var x = document.getElementById('uploadimg');
if (x.value == ''){
alert('上传失败,请选择要上传的图片!')

}
else
{
var AllowExt=['.jpg','.gif','.png','.webp'];
<!-- 获取图片格式:.jpg,.png -->
var FileExt=x.value.substr(x.value.lastIndexOf(".")).toLowerCase();
<!-- 判断一个字符串是否在数组中 -->
if (AllowExt.toString().indexOf(FileExt) > -1){

alert('上传成功!!!');

}
else
{
alert('上传失败,上传文件格式为:(.jpg,.png,.gif,.webp),当前格式为:'+FileExt+'请重新上传!');
}
}

}
</script>
</form>
{% endblock %}
5、urls.py中添加一条地址匹配

path('processupload/',views.ProcessImg), #django2.0版本用path

现在就可以去页面访问并测试上传图片功能了。

这里只介绍了imagekit的一种使用方式,想了解更多可以参阅http://django-imagekit.readthedocs.io/en/latest/#specs。

还有另一app可以修改图片,详情请参阅:http://easy-thumbnails.readthedocs.io/en/latest/usage/#python

最新文章

  1. 使用UICollectionView实现首页的滚动效果
  2. 一些js
  3. Lua 协程coroutine
  4. Deep learning:四十四(Pylearn2中的Quick-start例子)
  5. 斐波那契数 c 语言实现
  6. 今日又遇无法启动apache
  7. YUV / RGB 格式及快速转换算法
  8. UIImage分类:返回一个可以拉伸的图片
  9. 笔记本光驱位安装固态硬盘及window系统一些过程记录
  10. c# 获取客户端ip
  11. 备忘录之 —— .bashrc(IC工具篇)
  12. dd命令的巧妙使用
  13. java接口的学习笔记
  14. (转) VS2010 Addins 外接程序(插件)开发
  15. performSelector 的缺点
  16. jQuery插件编写基础之“又见弹窗”
  17. PHP连接MYSQL操作数据库
  18. .netcore2.0 发布CentOS7
  19. 二维码生成(QRCode.js)
  20. IntelliJ IDEA SpringBoot 使用第三方Tomcat以及部署

热门文章

  1. 如何制作一款HTML5 RPG游戏引擎——第五篇,人物&amp;人物特效
  2. IntBuffer类的基本用法
  3. Python3 安装第三方包
  4. 2017 Multi-University Training Contest - Team 3 hdu6060 RXD and dividing
  5. selenium+python学习总结
  6. 20145316《Java程序设计》第二周学习总结
  7. typeof instanceof 和 obj.constructor
  8. Spring Boot @DeleteMapping
  9. 页面调用dll
  10. 【VS2015】未能创建 Visual C# 2015编译器