定制FileField中的上傳文件名稱實例
FileField中的upload_to屬性可以設定上傳文件的存儲目錄和名稱,它可以是個字符串,也可以是個callable,比如一個方法。
當upload_to的值設為一個方法時,就可以對上傳文件的名稱進行修改了。方法需要兩個參數(shù),instance與filename,instance為此FileField所屬的Model實例,filename為上傳文件的名稱。
舉例:
def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
return 'user_{0}/{1}'.format(instance.user.id, filename)
class MyModel(models.Model):
upload = models.FileField(upload_to=user_directory_path)
當一個類定義了__call__方法時,也可以像func一樣被調用,所以,upload_to的值也可以是一個定義了__call__方法的類。
比如,要根據(jù)上傳時間為文件名加時間戳:
import hashlib
import os
import 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中的上傳文件名稱實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python打開url并按指定塊讀取網(wǎng)頁內容的方法
這篇文章主要介紹了python打開url并按指定塊讀取網(wǎng)頁內容的方法,涉及Python操作URL及網(wǎng)頁內容的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
pygame實現(xiàn)俄羅斯方塊游戲(對戰(zhàn)篇1)
這篇文章主要為大家詳細介紹了pygame實現(xiàn)俄羅斯方塊游戲的對戰(zhàn)篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10
Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉頁面
這篇文章主要介紹了Python flask框架實現(xiàn)瀏覽器點擊自定義跳轉頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06
python腳本請求數(shù)量達到上限,http請求重試問題
這篇文章主要介紹了python腳本請求數(shù)量達到上限,http請求重試問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

