Django实现前台上传并显示图片功能


Posted in Python onMay 29, 2020

1. 前台

templates/upload/upload.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<form action="/myupload/upload/" method="post" enctype="multipart/form-data">
  {% csrf_token %}
  名字:<input type="text" name="name"><br>
  头像:<input type="file" name="avator"><br>
  <input type="submit" value="提交">
</form>
</body>
</html>

2. 项目设定

settings.py

#添加

ALLOW_UPLOAD = ['jpg', 'png', 'jpeg']

3.app设定

urls.py

from django.contrib import admin
from django.urls import path, register_converter, re_path
from . import views

urlpatterns = [
  path('', views.index, name='index'), # 上传首页
  path('upload/', views.upload), # 上传图片
]

views.py

from django.shortcuts import render
from .models import User,Article
from django.http import HttpResponse
from django.conf import settings
from datetime import datetime
import os
from django.shortcuts import redirect, reverse
import hashlib

# Create your views here.
def index(request):
  users = User.objects.all()
  article = Article.objects.all()
  return render(request, 'myupload/index.html', locals())


def upload(request):
  if request.method == 'GET':
    return render(request, 'myupload/upload.html')
  else:
    name = request.POST.get('name')
    pic = request.FILES.get('avator')

    media_root = settings.MEDIA_ROOT # media
    allow_upload = settings.ALLOW_UPLOAD # ALLOW_UPLOAD
    # path = 'upload/{}/{}/{}/'.format(datetime.now().year, datetime.now().month, datetime.now().day)
    '{:02d}'.format
    path = 'upload/{}/{}/{}/'.format(datetime.now().year,'{:02d}'.format(datetime.now().month), '{:02d}'.format(datetime.now().day))
    full_path = media_root + '/' + path

    # full_path = 'media/upload/2019/12/20'
    if not os.path.exists(full_path): # 判断路径是否存在
      os.makedirs(full_path) # 创建此路径

    # 要不要改图片的名字 生成hash
    # 这块要不要判断图片类型 .jpg .png .jpeg
    # '/../../../myviews/setting.py'
    print(pic)
    print(full_path)
    print(full_path+pic.name)
    if pic.name.split('.')[-1] not in allow_upload:
      return HttpResponse('fail')

    with open(full_path + '/' + pic.name, 'wb') as f:
      for c in pic.chunks(): # 相当于切片
        f.write(c)

    User.objects.create(name=name, avator=path + pic.name)
    return redirect('myupload:index')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django的session中对于用户验证的支持
Jul 23 Python
python中import学习备忘笔记
Jan 24 Python
python机器学习之神经网络(三)
Dec 20 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python调用接口的4种方式代码实例
Nov 19 Python
python 实现视频 图像帧提取
Dec 10 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
利用python中的matplotlib打印混淆矩阵实例
Jun 16 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
python中pdb模块实例用法
Jan 15 Python
Python selenium的这三种等待方式一定要会!
Jun 10 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 #Python
Django实现后台上传并显示图片功能
May 29 #Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 #Python
Python基于smtplib模块发送邮件代码实例
May 29 #Python
Django通过json格式收集主机信息
May 29 #Python
Python小白不正确的使用类变量实例
May 29 #Python
python小白切忌乱用表达式
May 29 #Python
You might like
优化PHP代码的53条建议
2008/03/27 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
javascript的事件描述
2006/09/08 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
JSONP基础知识详解
2017/03/19 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
python中pip的安装与使用教程
2018/08/10 Python
python 二维数组90度旋转的方法
2019/01/28 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
基于Python函数和变量名解析
2019/07/19 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
大学生的自我鉴定范文
2014/01/21 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
买卖协议书范本
2014/04/21 职场文书
安全教育演讲稿
2014/05/09 职场文书
2016春节慰问信范文
2015/03/25 职场文书
2016年端午节寄语
2015/12/04 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python
python接口测试返回数据为字典取值方式
2022/02/12 Python