Django實現(xiàn)前臺上傳并顯示圖片功能
更新時間:2020年05月29日 11:40:57 作者:--TINGXIN--
這篇文章主要介紹了Django實現(xiàn)前臺上傳并顯示圖片功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
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. 項目設(shè)定
settings.py
#添加
ALLOW_UPLOAD = ['jpg', 'png', 'jpeg']
3.app設(shè)定
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) # 創(chuàng)建此路徑 # 要不要改圖片的名字 生成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(): # 相當(dāng)于切片 f.write(c) User.objects.create(name=name, avator=path + pic.name) return redirect('myupload:index')
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)據(jù)持久存儲 pickle模塊的基本使用方法解析
這篇文章主要介紹了python數(shù)據(jù)持久存儲 pickle模塊的基本使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08matplotlib常見函數(shù)之plt.rcParams、matshow的使用(坐標(biāo)軸設(shè)置)
這篇文章主要介紹了matplotlib常見函數(shù)之plt.rcParams、matshow的使用(坐標(biāo)軸設(shè)置),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python小程序 控制鼠標(biāo)循環(huán)點擊代碼實例
這篇文章主要介紹了Python小程序 控制鼠標(biāo)循環(huán)點擊代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能
想要學(xué)習(xí)如何使用pyserial庫實現(xiàn)串口通信嗎?這篇指南將帶你一步步了解Python中的串口通信,無論是控制硬件設(shè)備還是與外部設(shè)備進(jìn)行數(shù)據(jù)交換,pyserial庫都能為你提供便捷的解決方案,快來跟著我們的指南,輕松掌握串口通信的技巧吧!2023-11-11