26 Django高级- 上传图片

简介: 26 Django高级- 上传图片

Django在处理文件上传的时候,文件数据被保存在request.FILES,FILES中的每个键为<input type="file" name="" />中的name。

注意FILES只有在请求的方法为POST 且提交的带有enctype=“multipart/form-data” 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。

使用模型处理上传文件:将属性定义成models.ImageField类型

pic=models.ImageField(upload_to='cars/')

如果属性类型为ImageField需要安装包Pilow

pip install Pillow==3.4.1

图片存储路径

  • 在项目根目录下创建media文件夹
  • 图片上传后,会被保存到“/static/media/cars/图片文件”
  • 打开settings.py文件,增加media_root项
MEDIA_ROOT=os.path.join(BASE_DIR,"static/media")

使用django后台管理,遇到ImageField类型的属性会出现一个file框,完成文件上传

手动上传的模板代码

<html>
<head>
    <title>文件上传</title>
</head>
<body>
    <form method="post" action="upload/" enctype="multipart/form-data">
        <input type="text" name="title"><br>
        <input type="file" name="pic"/><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>

手动上传的视图代码

from django.conf import settings
def upload(request):
    if request.method == "POST":
        f1 = request.FILES['pic']
        fname = '%s/cars/%s' % (settings.MEDIA_ROOT,f1.name)
        with open(fname, 'w') as pic:
            for c in f1.chunks():
                pic.write(c)
        return HttpResponse("ok")
    else:
        return HttpResponse("error")
目录
相关文章
|
NoSQL 调度 Redis
33 Django高级 - celery
33 Django高级 - celery
39 0
|
6月前
|
缓存 数据处理 数据库
Django 框架高级进阶:探索最佳实践与性能优化
【5月更文挑战第18天】在Django开发中,掌握高级技巧和性能优化是关键。最佳实践包括合理组织代码结构、数据库设计优化、使用信号机制和缓存策略。性能优化涉及数据库查询优化(如select_related和prefetch_related)、异步任务处理(如Celery)、启用HTTP缓存、优化模板渲染和服务器配置调整。示例中,通过分页减少数据加载量以提高性能。不断探索和应用这些方法能提升用户体验,应对高并发和大规模数据挑战。
107 6
|
6月前
|
Python
Django:构建 Web 应用的高级 Python 框架(二)安装 Django
Django:构建 Web 应用的高级 Python 框架(二)安装 Django
|
自然语言处理 搜索推荐 索引
32 Django高级 - 全文检索
32 Django高级 - 全文检索
57 0
|
XML 中间件 数据格式
Django 高级指南:深入理解和使用类视图和中间件
Django 是一款强大的 Python Web 框架,它提供了一套完整的解决方案,让我们能够用 Python 语言快速开发和部署复杂的 Web 应用。在本文中,我们将会深入研究 Django 中的两个高级特性:类视图(Class-Based Views)和中间件(Middleware)。
|
6月前
|
前端开发 安全 中间件
Django:构建 Web 应用的高级 Python 框架(一)
Django:构建 Web 应用的高级 Python 框架(一)
|
负载均衡 应用服务中间件 nginx
34 Django高级 - 布署
34 Django高级 - 布署
27 0
|
缓存 NoSQL 数据库
31 Django高级 - 缓存
31 Django高级 - 缓存
50 0
|
Python
30 Django高级 - 富文本编辑器
30 Django高级 - 富文本编辑器
68 0
|
SQL 前端开发 JavaScript
29 Django高级- Ajax
29 Django高级- Ajax
46 0
下一篇
无影云桌面