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中的time模块与datetime模块用法总结
Jun 30 Python
python DataFrame 修改列的顺序实例
Apr 10 Python
对Tensorflow中的矩阵运算函数详解
Jul 27 Python
django2笔记之路由path语法的实现
Jul 17 Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
浅谈Python 参数与变量
Jun 20 Python
深入浅析python 中的self和cls的区别
Jun 20 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 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 中的4种标记风格介绍
2012/05/10 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
python实现音乐下载的统计
2018/06/20 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python银行系统实现源码
2019/10/25 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
Python matplotlib可视化实例解析
2020/06/01 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
鲜果饮品店创业计划书
2014/01/21 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
党员承诺书内容
2014/03/26 职场文书
学生会竞聘书范文
2014/03/31 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL