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 19 Python
Python数据类型学习笔记
Jan 13 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
python编写暴力破解zip文档程序的实例讲解
Apr 24 Python
使用pycharm生成代码模板的实例
May 23 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
简单了解python中对象的取反运算符
Jul 01 Python
python3 写一个WAV音频文件播放器的代码
Sep 27 Python
python+flask编写一个简单的登录接口
Nov 13 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php中看实例学正则表达式
2006/12/25 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
jQuery链式操作实例分析
2015/11/16 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python作用域用法实例详解
2016/03/15 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python小白学习包管理器pip安装
2020/06/09 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
美国鲜花递送:UrbanStems
2021/01/04 全球购物
合作经营协议书范本
2014/04/17 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
格林童话读书笔记
2015/06/30 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
小学大队长竞选稿
2015/11/20 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
java解析XML详解
2021/07/09 Java/Android
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript