国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

django之重寫FileField字段的保存

wangzy2019 / 2107人閱讀

摘要:重寫字段的保存,以重命名為例添加配置中末尾添加配置如下,指定指向的操作文件中的類文件上傳重寫添加應用下添加包,注意有文件,下創建文件,文件內容為初始化重寫方法文件擴展名文件目錄定義文件名,源文件名,避開系統定義的隨機字符串追加,所

重寫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的隨機數保存,效果如下:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41008.html

相關文章

  • django開發model篇-Field類型講解

    摘要:今天介紹一下開發中,定義模型時用到的相關字段類型和字段選項。的實例是作為類型保存到數據庫中的,默認字符串的最大長度是,但是可以使用參數指定最大長度。浮點類型,用中的實例表示整數類型。關于的字段類型和參數就先講到這里。 今天介紹一下django開發中,定義模型時用到的相關字段類型和字段選項。 先說說常用的字段類型:1) AutoField: 自增字段類型,當自定義自增類型的id時,可以使...

    glumes 評論0 收藏0
  • Django ORM

    摘要:對象關系映射,簡稱模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。在業務邏輯層和數據庫層之間充當了橋梁的作用。每個字段被指定為一個類屬性,每個屬性映射到一個數據庫列。字符類型,必須提供參數,表示字符長度。 對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。 簡單的說,ORM是...

    BlackHole1 評論0 收藏0
  • 第一篇(從django后臺解析excel數據批量導入數據庫)

    摘要:總結整個過程的難點在于獲取文件對象,從數據中取值然后在按取出,這樣我們就可以從后臺上傳文件,然后進行批量導入數據庫,其他數據格式只需要改和中的數據字段就可以 第一篇(從django后臺解析excel數據批量導入數據庫) 文章會在github中持續更新 作者: knthony github 聯系我 1.django 如何從后臺上傳excel中批量解析數據 要從django后臺導入...

    2i18ns 評論0 收藏0
  • python入門 django入門 (一)

    摘要:本人年開發經驗,現就職于電信,因工作需要學習,記錄自己的學習記錄。 本人java10年開發經驗,現就職于電信,因工作需要學習python,記錄自己的學習記錄。后面也...

    hzc 評論0 收藏0
  • Python_Django

    摘要:為了將代碼規范,約定俗成將視圖放置在項目或應用程序目錄中命名為文件中。必須接受字段表示字符串長度不能超過該值,默認的標簽最常用的。例,自動添加發布時間。以字符串的形式存在,默認最大長度,可以通過參數設置。用于保存通用唯一識別碼的字段。 MVC 大部分開發語言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模塊之間的耦合性,方便變更,更容易重構代碼,最大程度上實現代碼的重...

    BearyChat 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<