栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django实现前台上传并显示图片功能

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django实现前台上传并显示图片功能

1. 前台

templates/upload/upload.html




  
  Title




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')

Django实现后台上传并显示图片功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/19137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号