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

資訊專欄INFORMATION COLUMN

django之重寫FileField字段的保存

wangzy2019 / 2136人閱讀

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

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

settings.py添加配置

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

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

app應(yīng)用下添加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):
        #文件擴(kuò)展名
        ext = os.path.splitext(name)[1]
        #文件目錄
        d = os.path.dirname(name)
        # 定義文件名,源文件名,避開系統(tǒng)定義的隨機(jī)字符串追加,所以避開不用name字段
        end = utils.find_last(str(content), ".")
        filename = ""
        if end != -1:
            filename = str(content)[:end]
        # 定義文件名,年月日時分秒隨機(jī)數(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的隨機(jī)數(shù)保存,效果如下:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41008.html

相關(guān)文章

  • django開發(fā)model篇-Field類型講解

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

    glumes 評論0 收藏0
  • Django ORM

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

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

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

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

    摘要:本人年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學(xué)習(xí),記錄自己的學(xué)習(xí)記錄。 本人java10年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學(xué)習(xí)python,記錄自己的學(xué)習(xí)記錄。后面也...

    hzc 評論0 收藏0
  • Python_Django

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

    BearyChat 評論0 收藏0

發(fā)表評論

0條評論

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