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修改注册表终止360进程实例
Oct 13 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
django中media媒体路径设置的步骤
Nov 15 Python
python加载自定义词典实例
Dec 06 Python
Python中filter与lambda的结合使用详解
Dec 24 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
django数据模型中null和blank的区别说明
Sep 02 Python
详解python polyscope库的安装和例程
Nov 13 Python
python实现无边框进度条的实例代码
Dec 30 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中显示数组与对象的实现代码
2011/04/18 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
PHP的几个常用加密函数
2016/02/03 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
微信小程序实现动态获取元素宽高的方法分析
2018/12/10 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
node 版本切换的实现
2020/02/02 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python类和继承用法实例
2015/07/07 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
python实现ping命令小程序
2020/12/28 Python
10张动图学会python循环与递归问题
2021/02/06 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
生物学学生自我评价
2014/01/17 职场文书
高一生物教学反思
2014/01/17 职场文书
会计专业自我鉴定
2014/02/10 职场文书
个人租房协议书
2014/04/09 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
介绍信的写法
2015/01/31 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
Golang并发工具Singleflight
2022/05/06 Golang