最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django實現(xiàn)文件上傳下載功能

 更新時間:2019年10月06日 10:25:04   作者:羅漢爺  
這篇文章主要為大家詳細介紹了Django實現(xiàn)文件上傳下載功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

項目介紹

最近學習django,通過文件上傳下載這個小項目,總結(jié)下常用的知識點。
做這個案例我有以下需求:

1.要支持一次上傳多個文件

2.支持上傳后記錄上傳的數(shù)據(jù)以及列表展示

3.支持下載和刪除文件記錄

效果展示

數(shù)據(jù)庫記錄

開發(fā)步驟

創(chuàng)建項目:

django-admin startproject file_upload
cd file_upload
python manage.py startapp uploader

目錄結(jié)構(gòu):

0.settings.py

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

1.urls.py

父:

from django.contrib import admin
from django.urls import path, include
 
urlpatterns = [
 path('admin/', admin.site.urls),
 path('uploader/', include('uploader.urls'))
]

子:

from django.contrib import admin
from django.urls import path, include
from . import views
 
app_name = 'uploader'
 
urlpatterns = [
 path('', views.upload, name='upload'), # 上傳
 path('list/', views.list), # 列表
 path('download/<id>', views.download, name='download'), # 下載
 path('delete/<id>', views.delete, name='delete'), # 刪除
]

2.models.py

from django.db import models
from django.utils import timezone
 
'''
文件記錄
'''
class FileInfo(models.Model):
 file_name = models.CharField(max_length=500)
 file_size = models.DecimalField(max_digits=10, decimal_places=0)
 file_path = models.CharField(max_length=500)
 upload_time = models.DateTimeField(default=timezone.now())

3.forms.py

from django import forms
 
'''
上傳表單
'''
class UploadForm(forms.Form):
 file = forms.FileField(
 widget=forms.ClearableFileInput(attrs={'multiple': True}), # 支持多文件上傳
 label='選擇文件...',
 help_text='最大100M'
 )

4.views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.http import HttpResponseRedirect
from django.http import FileResponse
from django.template import RequestContext
from django.urls import reverse
from django.utils.http import urlquote
 
from .models import FileInfo
from .forms import UploadForm
import os
 
 
# 上傳文件
def upload(request):
 # Handle file upload
 if request.method == 'POST':
 form = UploadForm(request.POST, request.FILES)
 if form.is_valid():
  files = request.FILES.getlist('file')
  for f in files:
  file_info = FileInfo(file_name=f.name, file_size=1 if 0 < f.size < 1024 else f.size / 1024, file_path=os.path.join('D:\\upload', f.name))
  file_info.save()
  # 上傳
  destination = open(os.path.join("D:\\upload", f.name), 'wb+')
  for chunk in f.chunks():
   destination.write(chunk)
  destination.close()
 
  # 返回上傳頁
  return HttpResponseRedirect('/uploader/list')
 else:
 form = UploadForm() # A empty, unbound form
 return render(request, 'uploader/upload.html', {'form': form})
 
 
# 文件列表
def list(request):
 file_infos = FileInfo.objects.all()
 
 return render(request, 'uploader/list.html', {'file_infos': file_infos})
 
 
# 下載文件
def download(request, id):
 file_info = FileInfo.objects.get(id=id)
 print('下載的文件名:' + file_info.file_name)
 file = open(file_info.file_path, 'rb')
 response = FileResponse(file)
 response['Content-Disposition'] = 'attachment;filename="%s"' % urlquote(file_info.file_name)
 return response
 
 
# 刪除文件
def delete(request, id):
 file_info = FileInfo.objects.get(id=id)
 file_info.delete()
 file_infos = FileInfo.objects.all()
 
 return HttpResponseRedirect('/uploader/list')

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python刪除本地夾里重復文件的方法

    python刪除本地夾里重復文件的方法

    這篇文章主要為大家詳細介紹了python刪除本地夾里重復文件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換方法

    JSON(JavaScript Object Nonation)是利用鍵值對+嵌套來表示數(shù)據(jù)的一種格式,以其輕量、易解析的優(yōu)點,這篇文章主要介紹了利用Python實現(xiàn)Shp格式向GeoJSON的轉(zhuǎn)換,需要的朋友可以參考下
    2019-07-07
  • Python調(diào)用ChatGPT制作基于Tkinter的桌面時鐘

    Python調(diào)用ChatGPT制作基于Tkinter的桌面時鐘

    這篇文章主要為大家詳細介紹了Python如何調(diào)用ChatGPT制作基于Tkinter的桌面時鐘,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-03-03
  • Python標準庫筆記struct模塊的使用

    Python標準庫筆記struct模塊的使用

    這篇文章主要介紹了Python標準庫筆記struct模塊的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • Centos7 Python3下安裝scrapy的詳細步驟

    Centos7 Python3下安裝scrapy的詳細步驟

    這篇文章主要介紹了Centos7 Python3下安裝scrapy的詳細步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • python通過floor函數(shù)舍棄小數(shù)位的方法

    python通過floor函數(shù)舍棄小數(shù)位的方法

    這篇文章主要介紹了python通過floor函數(shù)舍棄小數(shù)位的方法,實例分析了Python中floor函數(shù)的功能及使用技巧,需要的朋友可以參考下
    2015-03-03
  • Python數(shù)組與列表的區(qū)別解析

    Python數(shù)組與列表的區(qū)別解析

    列表因為其存儲的類型可以是任何對象,因此列表的用處更廣泛,更多樣化,并且列表可以有更多的存儲空間去使用,而數(shù)組使用的空間就相對較少,這篇文章主要介紹了Python數(shù)組與列表的區(qū)別,需要的朋友可以參考下
    2023-11-11
  • 淺談Python peewee 使用經(jīng)驗

    淺談Python peewee 使用經(jīng)驗

    這篇文章主要介紹了淺談Python peewee 使用經(jīng)驗,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • pandas中df.rename()的具體使用

    pandas中df.rename()的具體使用

    本文主要介紹了pandas中df.rename()的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • python字符串,元組,列表,字典互轉(zhuǎn)代碼實例詳解

    python字符串,元組,列表,字典互轉(zhuǎn)代碼實例詳解

    這篇文章主要介紹了python字符串,元組,列表,字典互轉(zhuǎn)代碼實例詳解,需要的朋友可以參考下
    2020-02-02

最新評論

浦江县| 调兵山市| 荔浦县| 柳河县| 益阳市| 四平市| 巢湖市| 兴义市| 班戈县| 和田市| 博客| 元朗区| 新竹市| 商洛市| 定日县| 巩留县| 左贡县| 赤壁市| 柘荣县| 广河县| 利川市| 定襄县| 仙居县| 东丽区| 万宁市| 卢湾区| 湄潭县| 化隆| 巴东县| 通州区| 香格里拉县| 陇南市| 潞城市| 边坝县| 滦南县| 隆昌县| 沙雅县| 太原市| 鹤壁市| 仁布县| 华亭县|