Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能
1. 前臺(tái)
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. 項(xiàng)目設(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')
Django實(shí)現(xiàn)后臺(tái)上傳并顯示圖片功能
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python使用opencv驅(qū)動(dòng)攝像頭的方法
今天小編就為大家分享一篇python使用opencv驅(qū)動(dòng)攝像頭的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
使用SimpleITK讀取和保存NIfTI/DICOM文件實(shí)例
這篇文章主要介紹了使用SimpleITK讀取和保存NIfTI/DICOM文件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python使用APScheduler實(shí)現(xiàn)定時(shí)任務(wù)過程解析
這篇文章主要介紹了Python使用APScheduler實(shí)現(xiàn)定時(shí)任務(wù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
計(jì)算python腳本執(zhí)行時(shí)間的多種方法
在編寫Python腳本時(shí),了解腳本的執(zhí)行時(shí)間通常是很有用的,特別是在優(yōu)化代碼或評(píng)估性能時(shí),Python提供了多種方法來測(cè)量腳本的執(zhí)行時(shí)間,從內(nèi)置模塊到第三方庫,可以選擇適合你需求的方式,本文將介紹計(jì)算 Python 腳本執(zhí)行時(shí)間的多種方法,需要的朋友可以參考下2023-11-11
AUC計(jì)算方法與Python實(shí)現(xiàn)代碼
今天小編就為大家分享一篇AUC計(jì)算方法與Python實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python爬蟲實(shí)現(xiàn)模擬點(diǎn)擊動(dòng)態(tài)頁面
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)模擬點(diǎn)擊動(dòng)態(tài)頁面,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python實(shí)現(xiàn)文本特征提取的方法詳解
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)提取四種不同文本特征的方法,有字典文本特征提取、英文文本特征提取、中文文本特征提取和TF-IDF 文本特征提取,感興趣的可以了解一下2022-08-08
python中精確輸出JSON浮點(diǎn)數(shù)的方法
這篇文章主要介紹了python中精確輸出JSON浮點(diǎn)數(shù)的方法,需要的朋友可以參考下2014-04-04

