1.首先是html页面的form表单的三大属性,action是提交到哪,method是提交方式,enctype只要有图片上传就要加这个属性

Django框架自带csrf_token ,所以需要在前端页面也生成csrf_token字符串,来验证真实客户

      <form action="/pic_upload/" method="POST" enctype="multipart/form-data">
          {% csrf_token %}
          <input type="file" name="file">
          <input type="submit" value="提交">
      </form>
 
2.如下是上传图片的接口:
def pic_upload(request):
    if request.method == "GET":
        return render(request,"helloapp/pic_upload.html",locals())
    if request.method == "POST":
        error = ""
        fp = request.FILES.get("file")
        # fp 获取到的上传文件对象
        if fp:
            path = os.path.join(STATICFILES_DIRS[0],'image/' + fp.name)   # 上传文件本地保存路径, image是static文件夹下专门存放图片的文件夹
            # fp.name #文件名
            #yield = fp.chunks() # 流式获取文件内容
            # fp.read() # 直接读取文件内容
            if fp.multiple_chunks():    # 判断上传文件大于2.5MB的大文件
                # 为真
                file_yield = fp.chunks()    # 迭代写入文件
                with open(path,'wb') as f:
                    for buf in file_yield:     # for情况执行无误才执行 else
                        f.write(buf)
                    else:
                        print("大文件上传完毕")
            else:
                with open(path,'wb') as f:
                    f.write(fp.read())
                print("小文件上传完毕")
            models.ImgPath.objects.create(path=('image/' + fp.name))     #  image是static文件夹下专门存放图片的文件夹
        else:
            error = "文件上传为空"
            return render(request,"helloapp/pic_upload.html",locals())
        return redirect("helloapp/pic_index/") # 重定向到首页
 
3.做个图片展示的页面,对图片展示对应的接口传过来的参数加以判断
        {% for img in imgs %}
        <img src="{% static img.path %}">
        {% empty %}
        <h1>您没有上传任何图片</h1>
        {% endfor %}
 
4.图片展示的接口:
def pic_index(request):
    imgs = models.ImgPath.objects.all()
    return render(request,'helloapp/pic_index.html',locals())
 
至此,Django中一个简单的图片上传到展示就做好了,接下来还想怎么耍,望多提宝贵意见或建议,我们一起来研究更炫更理想的效果

Django中怎么做图片上传--图片展示的更多相关文章

  1. 潭州课堂25班:Ph201805201 tornado 项目 第三课 项目 图片上传,展示 (课堂笔记)

    tornado 相关说明 f增加图片上传功能, 在 main.py ,文件中创建个  UploadHandler 类,用来处理图片上传 上传图片之前,要先渲染这个页面,所以定个 get 方法,把这个页 ...

  2. spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

    spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...

  3. 微信小程序图片上传并展示

    1.首先编写微信小程序的页面和样式: index.js var total = []; Page({ data: { perImgSrc: [] }, onLoad: function (option ...

  4. yii2.0用gii自动补全代码做的简单增删改查,以及图片上传和展示

    首先已经用gii根据model层生成了控制器,模型,视图层. 表结构为如图所示:表名为zhoukao1,

  5. spring boot + vue实现图片上传及展示

    转载:https://blog.csdn.net/weixin_40337982/article/details/84031778 其中一部分对我很有帮助 转载记录下 首先,html页面: <! ...

  6. python3-开发进阶补充Django中的文件的上传

    PS:这段时间有点不在状态,刚刚找回那个状态,那么我们继续曾经的梦想 今天我们来补充一下文件的上传的几种方式: 首先我们先补充的一个知识点: 一.请求头ContentType: ContentType ...

  7. django中的Ajax文件上传

    主要介绍两个 1.ajax文件上传 2.写路由器 3.创建对应的函数 4.file_put.html代码 <!DOCTYPE html> <html lang="en&qu ...

  8. 微信小程序 实现图片上传并展示到前端(多文件)并实现表单提交验证

    链接: https://blog.csdn.net/guanj0623/article/details/121595884?spm=1001.2014.3001.5501 https://blog.c ...

  9. .net mvc + layui做图片上传(一)

    图片上传和展示是互联网应用中比较常见的一个功能,最近做的一个门户网站项目就有多个需要上传图片的功能模块.关于这部分内容,本来功能不复杂,但后面做起来却还是出现了一些波折.因为缺乏经验,对几种图片上传的 ...

随机推荐

  1. pycharm中连接公网IP方法

    我们的公网IP可以加到pycharm里面,这样程序跑的时候,在测试过程中就用pycharm直接修改文件,然后在pycharm里面上传,操作更加便捷 在pycharm中找到tool按钮,在菜单栏里面 然 ...

  2. Beta(1/7)

    鐵鍋燉腯鱻 项目:小鱼记账 团队成员 项目燃尽图 冲刺情况描述 站立式会议照片 各成员情况 团队成员 学号 姓名 git地址 博客地址 031602240 许郁杨 (组长) https://githu ...

  3. django——会话追踪技术

    1.引言 1.1什么是会话追踪技术 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 1.2 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发出 ...

  4. [CF542D]Superhero's Job

    [CF542D]Superhero's Job 题目大意: 定义函数 \[ J(x) = \sum_{\substack{1 \leq k \leq x \\ k \mid x \\ \gcd \le ...

  5. CSS文字溢出处理问题

    单行省略 div { white-space:nowrap; //断行处理:无断行 text-overflow:ellipsis; //文字溢出处理:省略号 overflow:hidden; //溢出 ...

  6. [POJ1723]SOLDIERS(中位数)

    题意 给出n个点的坐标,它们只能往上.下.左.右一格一格地移动,求使其移动至水平线上的最小步数. 思路 转载 先易后难,对于纵向的问题,我们推个公式,,这个很容易看出是货仓选址问题,k取y[i]的中位 ...

  7. dnsmasq配置

    介绍 dnsmasq是一个dns和dhcp服务 参数说明 dhcp-sequential-ip 默认情况下Dnsmasq分配ip是根据目标机的mac地址按一定的hash规则来的.这样每个目标机在租约期 ...

  8. python学习:注释、获取用户输入、字符串拼接、运算符、表达式

    注释 #为单行注释'''三个单引号(或者"""三个双引号)为多行注释,例如'''被注释的内容''' '''三个单引号还可以起到多行打印的功能. #ctrl+? 选中的多行 ...

  9. Android第四次作业

    一.团队成员 成员1:刘宇莹 学号:1600802122 班级:计算机164 博客链接:刘宇莹 成员2:孟鑫菲 学号:1600802092 班级:计算机163 博客链接:孟鑫菲 二.团队项目apk 拍 ...

  10. [LeetCode] Rotate String 旋转字符串

    We are given two strings, A and B. A shift on A consists of taking string A and moving the leftmost ...