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

Django 刪除upload_to文件的步驟

 更新時間:2020年03月30日 10:02:39   作者:sunmlight  
這篇文章主要介紹了Django 刪除upload_to文件的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

新版Django在admin后臺直接刪除一條數據時,file = models.FileField(upload_to=‘file')上傳的文件并不會刪除,以下為解決方法:

在model.py加入:

from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
@receiver(pre_delete, sender=AddDateModel)
def mymodel_delete(sender, instance, **kwargs):
  # Pass false so FileField doesn't save the model.
  instance.file.delete(False)

補充知識:django之重寫FileField字段的保存實例

重寫FileField字段的保存,以重命名為例

settings.py添加配置

settings.py中末尾添加配置如下,指定指向的操作文件中的類:

# 文件上傳重寫
DEFAULT_FILE_STORAGE = "app.customfilefield.storage.FileStorage"

添加FileStorage

app應用下添加python包customfilefield,注意有init.py文件,customfilefield下創(chuàng)建py文件storage.py,文件內容為:

storage.py

# -*-coding:utf-8 -*-
from django.core.files.storage import FileSystemStorage
from django.http import HttpResponse
from django.conf import settings
import os, time, random
from app import utils
 
class FileStorage(FileSystemStorage):
  def __init__(self, location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):
    #初始化
    super(FileStorage, self).__init__(location, base_url)
 
  #重寫 _save方法
  def _save(self, name, content):
    #文件擴展名
    ext = os.path.splitext(name)[1]
    #文件目錄
    d = os.path.dirname(name)
    # 定義文件名,源文件名,避開系統(tǒng)定義的隨機字符串追加,所以避開不用name字段
    end = utils.find_last(str(content), ".")
    filename = ""
    if end != -1:
      filename = str(content)[:end]
    # 定義文件名,年月日時分秒隨機數
    fn = time.strftime("%Y%m%d%H%M%S")
    fn = fn + "_%d" % random.randint(0,100)
    #重寫合成文件名
    name = os.path.join(d, filename + fn + ext)
    #調用父類方法
    return super(FileStorage, self)._save(name, content)

utils.py

# 獲取字符串中指定字符最后一次出現的位置
def find_last(string,str):
  last_position=-1
  while True:
    position=string.find(str,last_position+1)
    if position==-1:
      return last_position
    last_position=position

如此,最后上傳的文件名為原文件名加上年月日時分秒加上0-100的隨機數保存,效果如下:

以上這篇Django 刪除upload_to文件的步驟就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python處理日期和時間的方法總結

    Python處理日期和時間的方法總結

    這篇文章主要介紹了Python時間和日期的處理方法總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-03-03
  • 淺談spring boot 集成 log4j 解決與logback沖突的問題

    淺談spring boot 集成 log4j 解決與logback沖突的問題

    今天小編就為大家分享一篇淺談spring boot 集成 log4j 解決與logback沖突的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python創(chuàng)建Getter和Setter的方法詳解

    Python創(chuàng)建Getter和Setter的方法詳解

    Getters?和?Setters?是幫助我們設置類變量或屬性而無需直接訪問的方法,這篇文章主要和大家介紹了如何在Python中創(chuàng)建Getter和Setter,需要的可以參考下
    2023-10-10
  • Python進階之迭代器與迭代器切片教程

    Python進階之迭代器與迭代器切片教程

    迭代器是 Python 中獨特的一種高級特性,而切片也是一種高級特性,兩者相結合,會產生什么樣的結果呢,需要的朋友可以參考下
    2020-01-01
  • 詳解python的集合set的函數

    詳解python的集合set的函數

    這篇文章主要為大家介紹了python的集合set的函數,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Django工程的分層結構詳解

    Django工程的分層結構詳解

    在本篇文章里小編給各位分享的是關于Django工程的分層結構的相關知識點內容,有興趣的朋友們學習參考下。
    2019-07-07
  • Scrapy中如何向Spider傳入參數的方法實現

    Scrapy中如何向Spider傳入參數的方法實現

    這篇文章主要介紹了Scrapy中如何向Spider傳入參數的方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python 文件操作之讀取文件(read),文件指針與寫入文件(write),文件打開方式示例

    Python 文件操作之讀取文件(read),文件指針與寫入文件(write),文件打開方式示例

    這篇文章主要介紹了Python 文件操作之讀取文件(read),文件指針與寫入文件(write),文件打開方式,結合實例形式分析了Python文件讀寫相關的指針、打開方式等相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • python數字圖像處理skimage讀取顯示與保存圖片

    python數字圖像處理skimage讀取顯示與保存圖片

    這篇文章主要為大家介紹了python數字圖像處理使用skimage讀取顯示與保存圖片示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • python 引用傳遞和值傳遞詳解(實參,形參)

    python 引用傳遞和值傳遞詳解(實參,形參)

    這篇文章主要介紹了python 引用傳遞和值傳遞詳解(實參,形參)。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論

汉源县| 诏安县| 长顺县| 白山市| 紫金县| 甘德县| 昌邑市| 文登市| 铁岭县| 缙云县| 长子县| 筠连县| 嘉黎县| 霍山县| 鹤壁市| 乌苏市| 溧水县| 栾城县| 郎溪县| 乐业县| 靖江市| 淮南市| 图们市| 运城市| 栾川县| 灯塔市| 垣曲县| 恩施市| 务川| 雷山县| 辛集市| 庄河市| 田林县| 通江县| 体育| 任丘市| 南川市| 天台县| 连平县| 姚安县| 象州县|