摘要:重寫字段的保存,以重命名為例添加配置中末尾添加配置如下,指定指向的操作文件中的類文件上傳重寫添加應(yīng)用下添加包,注意有文件,下創(chuàng)建文件,文件內(nèi)容為初始化重寫方法文件擴(kuò)展名文件目錄定義文件名,源文件名,避開系統(tǒng)定義的隨機(jī)字符串追加,所
settings.py添加配置重寫FileField字段的保存,以重命名為例
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
摘要:今天介紹一下開發(fā)中,定義模型時用到的相關(guān)字段類型和字段選項。的實例是作為類型保存到數(shù)據(jù)庫中的,默認(rèn)字符串的最大長度是,但是可以使用參數(shù)指定最大長度。浮點類型,用中的實例表示整數(shù)類型。關(guān)于的字段類型和參數(shù)就先講到這里。 今天介紹一下django開發(fā)中,定義模型時用到的相關(guān)字段類型和字段選項。 先說說常用的字段類型:1) AutoField: 自增字段類型,當(dāng)自定義自增類型的id時,可以使...
摘要:對象關(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是...
摘要:總結(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)入...
摘要:本人年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學(xué)習(xí),記錄自己的學(xué)習(xí)記錄。 本人java10年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學(xué)習(xí)python,記錄自己的學(xué)習(xí)記錄。后面也...
摘要:為了將代碼規(guī)范,約定俗成將視圖放置在項目或應(yīng)用程序目錄中命名為文件中。必須接受字段表示字符串長度不能超過該值,默認(rèn)的標(biāo)簽最常用的。例,自動添加發(fā)布時間。以字符串的形式存在,默認(rèn)最大長度,可以通過參數(shù)設(shè)置。用于保存通用唯一識別碼的字段。 MVC 大部分開發(fā)語言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模塊之間的耦合性,方便變更,更容易重構(gòu)代碼,最大程度上實現(xiàn)代碼的重...
閱讀 3274·2021-11-22 14:44
閱讀 1120·2021-11-16 11:53
閱讀 1271·2021-11-12 10:36
閱讀 707·2021-10-14 09:43
閱讀 3700·2019-08-30 15:55
閱讀 3404·2019-08-30 14:14
閱讀 1743·2019-08-26 18:37
閱讀 3418·2019-08-26 12:12