欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django 刪除upload_to文件的步驟

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

新版Django在admin后臺直接刪除一條數(shù)據(jù)時,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,文件內(nèi)容為:

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]
    # 定義文件名,年月日時分秒隨機數(shù)
    fn = time.strftime("%Y%m%d%H%M%S")
    fn = fn + "_%d" % random.randint(0,100)
    #重寫合成文件名
    name = os.path.join(d, filename + fn + ext)
    #調(diào)用父類方法
    return super(FileStorage, self)._save(name, content)

utils.py

# 獲取字符串中指定字符最后一次出現(xiàn)的位置
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的隨機數(shù)保存,效果如下:

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

相關文章

  • 跟老齊學Python之Import 模塊

    跟老齊學Python之Import 模塊

    本文主要講解了基本的import模塊方法,首先從模塊的定義入手,接著講訴如何自己編寫模塊,非常簡單實用,有需要的朋友可以參考下
    2014-10-10
  • Python使用JDAudioCrawler將下載的音頻存儲到本地

    Python使用JDAudioCrawler將下載的音頻存儲到本地

    在當今數(shù)字化時代,音頻數(shù)據(jù)的獲取和處理變得越來越重要,本文將訪問網(wǎng)易云音樂為案例,介紹如何使用JDAudioCrawler這個強大的工具,將音頻數(shù)據(jù)存儲下載到本地存儲中,需要的可以了解下
    2023-10-10
  • Python中Pickling和Unpickling的區(qū)別詳解

    Python中Pickling和Unpickling的區(qū)別詳解

    在本文中,我們將探討 Python 中 pickling 和 unpickling 之間的主要區(qū)別,我們將詳細討論 Python pickling 和 unpickling 的概念,包括它們的目的、語法、用法以及安全可靠的 pickling 和 unpickling 操作的注意事項,需要的朋友可以參考下
    2023-09-09
  • Go/Python/Erlang編程語言對比分析及示例代碼

    Go/Python/Erlang編程語言對比分析及示例代碼

    這篇文章主要介紹了Go/Python/Erlang編程語言對比分析及示例代碼,本文重點是給大家介紹go語言,從語言對比分析的角度切入介紹,需要的朋友可以參考下
    2018-04-04
  • Python3讀取Excel數(shù)據(jù)存入MySQL的方法

    Python3讀取Excel數(shù)據(jù)存入MySQL的方法

    今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python腳本實現(xiàn)定時任務的最佳方法

    Python腳本實現(xiàn)定時任務的最佳方法

    我們在日常工作中,常常會用到需要周期性執(zhí)行的任務,下面這篇文章主要給大家介紹了關于Python腳本實現(xiàn)定時任務的最佳方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 使用批處理腳本自動生成并上傳NuGet包(操作方法)

    使用批處理腳本自動生成并上傳NuGet包(操作方法)

    這篇文章主要介紹了使用批處理腳本自動生成并上傳NuGet包的操作方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • python中停止線程的幾種常用方法

    python中停止線程的幾種常用方法

    這篇文章主要介紹了python中停止線程的幾種常用方法,在Python中停止線程沒有直接方法,但可以通過標志變量、守護線程或拋出異常來實現(xiàn),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Python簡單計算給定某一年的某一天是星期幾示例

    Python簡單計算給定某一年的某一天是星期幾示例

    這篇文章主要介紹了Python簡單計算給定某一年的某一天是星期幾,涉及Python基于蔡勒公式的簡單日期數(shù)值運算相關操作技巧,需要的朋友可以參考下
    2018-06-06
  • Python編程之序列操作實例詳解

    Python編程之序列操作實例詳解

    這篇文章主要介紹了Python編程之序列操作,結(jié)合實例形式分析了Python序列的功能、相關函數(shù)與具體使用技巧,需要的朋友可以參考下
    2017-07-07

最新評論