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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
Python中特殊函数集锦
Jul 27 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
Pycharm设置界面全黑的方法
May 23 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
Jun 24 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
Python基础知识之变量的详解
Apr 14 Python
详解Python描述符的工作原理
Jun 11 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
Docker配置PHP开发环境教程
2016/12/21 PHP
DD_belatedPNG,IE6下PNG透明解决方案(国外)
2010/12/06 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
js对象的复制继承实例
2015/01/10 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
Python字符和字符值(ASCII或Unicode码值)转换方法
2015/05/21 Python
Python注释详解
2016/06/01 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
python属于软件吗
2020/06/18 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
天游软件面试
2013/11/23 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
十佳大学生村官事迹
2014/01/09 职场文书
公益广告语集锦
2014/03/13 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
个人党性锻炼总结
2015/03/05 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
学习党史心得体会2016
2016/01/23 职场文书
七年级生物教学反思
2016/02/20 职场文书
2019年教师节祝福语精选,给老师送上真诚的祝福
2019/09/09 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python