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代码制作configure文件示例
Jul 28 Python
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
win10系统中安装scrapy-1.1
Jul 03 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
Python JSON格式数据的提取和保存的实现
Mar 22 Python
python区块及区块链的开发详解
Jul 03 Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 Python
Django model update的多种用法介绍
Mar 28 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 Python
Python 复平面绘图实例
Nov 21 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 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
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
php的控制语句
2006/10/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
JavaScript职责链模式概述
2016/09/17 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
高中生物教学反思
2014/02/05 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
爱心募捐感谢信
2015/01/22 职场文书
学困生帮扶工作总结
2015/08/13 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers