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实现一个转存纯真IP数据库的脚本分享
May 21 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
django表单实现下拉框的示例讲解
May 29 Python
用python生成1000个txt文件的方法
Oct 25 Python
学习Django知识点分享
Sep 11 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
pycharm第三方库安装失败的问题及解决经验分享
May 09 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
Python绘图之二维图与三维图详解
Aug 04 Python
python基础详解之if循环语句
Apr 24 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设计模式之命令模式的深入解析
2013/06/13 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
Web开发之JavaScript
2012/03/29 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Python pass详细介绍及实例代码
2016/11/24 Python
机器学习python实战之手写数字识别
2017/11/01 Python
Django 缓存配置Redis使用详解
2019/07/23 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
导游实习生自荐书
2014/01/28 职场文书
实习生评语
2014/04/26 职场文书
医师定期考核实施方案
2014/05/07 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
商场消防安全责任书
2014/07/29 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技
Oracle锁表解决方法的详细记录
2022/06/05 Oracle