django删除服务器.tz文件,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下创建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)

# 定义文件名,源文件名,避开系统定义的随机字符串追加,所以避开不用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的随机数保存,效果如下:

f30627c523a42c45f3d99a2fb4f56348.png

以上这篇Django 删除upload_to文件的步骤就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 文件管理的核心是通过使用 Django文件上传和处理功能来管理和操作文件。以下是 Django 文件管理的核心概念和组件: 1. 模型字段:Django 提供了多个模型字段来处理文件上传,最常用的是 FileField 和 ImageField。这些字段允许你将文件上传到指定的路径,并且可以在数据库中存储文件的相关信息,如文件名、路径等。 2. 文件存储类:Django 通过使用文件存储类来处理文件的存储和访问。默认情况下,Django 使用的是 FileSystemStorage 类,它将文件存储在服务器文件系统中。你也可以自定义文件存储类,以将文件存储到其他地方,例如云存储服务。 3. 视图函数和模板:在 Django 中,你可以编写视图函数来处理文件上传和下载的请求。视图函数可以接收用户上传的文件,并将其保存到指定的路径中。同时,你也可以在模板中使用相应的标签和过滤器来展示和处理文件。 4. 文件操作函数:Django 提供了一些方便的函数和方法来进行文件操作,如删除文件、复制文件、重命名文件等。通过使用这些函数,你可以在应用程序中对文件进行各种操作。 5. 路由和 URL 配置:为了处理文件上传和下载请求,你需要在 Django 的路由配置中添加相应的 URL 映射,并将其指向相应的视图函数。 通过结合上述组件和概念,你可以在 Django 应用程序中实现文件的上传、下载、删除、复制等文件管理功能。 希望对你有所帮助!如果有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值