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 相关文章推荐
python中将函数赋值给变量时需要注意的一些问题
Aug 18 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
django 快速启动数据库客户端程序的方法示例
Aug 16 Python
YUV转为jpg图像的实现
Dec 09 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
Python版中国省市经纬度
Feb 11 Python
Python中的With语句的使用及原理
Jul 29 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
Python Pandas模块实现数据的统计分析的方法
Jun 24 Python
Python实现视频自动打码的示例代码
Apr 08 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 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
js读取配置文件自写
2014/02/11 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
Vue 项目代理设置的优化
2018/04/17 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
python分割列表(list)的方法示例
2017/05/07 Python
python 判断网络连通的实现方法
2018/04/22 Python
python async with和async for的使用
2019/06/20 Python
django页面跳转问题及注意事项
2019/07/18 Python
简单分析python的类变量、实例变量
2019/08/23 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
统计岗位职责
2014/02/21 职场文书
院系推荐意见
2015/06/05 职场文书
golang正则之命名分组方式
2021/04/25 Golang
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
react 路由Link配置详解
2021/11/11 Javascript
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript
python解析照片拍摄时间进行图片整理
2022/07/23 Python