定製FileField中的上傳檔名稱例項

2022-10-04 20:54:19 字數 1341 閱讀 4892

filefield中的upload_to屬性可以設定上傳檔案的儲存目錄和名稱,它可以是個字串,也可以是個callable,比如乙個方法。

當upload_to的值設為乙個方法時,就可以對上傳檔案的名稱進行修改了。方法需要兩個引數,instance與filename,instance為此filefield所屬的model例項,filename為上傳檔案的名稱。

舉例:def user_directory_path(instance, filename):

# file will be uploaded to media_root/user_/

return 'user_/'.format(instance.user.id, filename)

class mymodel(models.model):

upload = models.filefield(upload_to=user_directory_path)

當乙個類定義了__call__方法時,也可以像func一樣被呼叫,所以,upload_to的值也可以是乙個定義了__cwww.cppcns.comall__方法的類。

比如,要根據上傳時間為檔名加時間戳:

import hashlib

import os

importwww.cppcns.com time

from django.utils.deconstruct import deconstructible

@deconstructible

class timestampfilename(object):

def __init__(self, path):

self.path = os.path.join(path, "%s%s")

def __call__(self, instance, filename):

extension = os.path.splitext(filename)[1]

程式設計客棧 data = "%s_%d"%(filename,int(time.time()))

file_hash = hashlib.sha1(data).hexdigest()

return self.path % (file_hash, extension)

model中的filefield可以如下定義:

class mymodel(models.model):

upload = models.filefield(upload_to=timestampfilename('media/'), )

本文標題: 定製filefield中的上傳檔名稱例項

本文位址: /jiaoben/python/200842.html

django 裡FileFIELD的編碼問題

當獲取filefield資料時會出現編碼問題 在資料庫裡顯示的是d python專案 wxmkczpy uploadfile qq截圖20190210180915.png 而取出後變成d 3a python e9 a1 b9 e7 9b ae wxmkczpy uploadfile qq e6 88...

python定製 python中定製類

1 python中 str 和repr 如果要把乙個類的例項變成 str,就需要實現特殊方法 str classperson object def init self,name,gender self.name name self.gender genderdef str self return p...

python中的定製類

str 在python中方法名如果是 x 的,那麼就有特殊的功能,因此叫做 魔法 方法 當使用print輸出物件的時候,只要自己定義了 str self 方法,那麼就會列印從在這個方法中return的資料 class student object def init self,name self.na...