django之對(duì)FileField字段的upload_to的設(shè)定方法
用django開發(fā),經(jīng)常要處理用戶上傳的文件, 比如user模型里面如果又個(gè)人頭像的字段 ImageField等等,而django在FielField字段(包括ImageField)的支持和擴(kuò)展是做的很好的,首先一個(gè)問題,是上傳的文件,django是放到哪里去了,(note: 文件流是不會(huì)放到數(shù)據(jù)庫里面的,該字段在數(shù)據(jù)庫中只存儲(chǔ)路徑),django提供了upload_to屬性
以下介紹upload_to的具體使用方法
1.最直接的方式,硬編碼路徑
# MyProject.settings.py 里面設(shè)置MEDIA_ROOT and MEDIA_URL MEDIA_ROOT = os.path.join(BASE_DIR, 'upload/') MEDIA_URL = '/upload/' #這個(gè)是在瀏覽器上訪問該上傳文件的url的前綴 # models.py class User(models.Model): avatar = ImageField(upload_to = 'avatar/') #實(shí)際的路徑就是 MEDIA_ROOT/avatar/filename #所以可以用uoload_to來指定文件存放的前綴路徑
2.使用strftime()
如果覺得以上方式太僵硬,萬一文件重名了,那就會(huì)有各種問題了,為了避免重名,django在upload_to上內(nèi)置了strftime()函數(shù)
# models.py class User(models.Model): avatar = ImageField(upload_to = 'avatar/%Y/%m/%d/')
這樣子的方式,%Y、%m、%d分別表示年、月、日
3.更加靈活的方式
當(dāng)然,如果覺得只是避免文件路徑重名,還是不能滿足你,其實(shí),django還允許你重寫一個(gè)upload_to函數(shù),重定義上傳文件的路徑前綴
# models.py #讓上傳的文件路徑動(dòng)態(tài)地與user的名字有關(guān) def upload_to(instance, fielname): return '/'.join([MEDIA_ROOT, instance.user_name, filename]) class User(models.Model): avatar = ImageField(upload_to = upload_to) user_name = CharField(max_length = 250)
以上這篇django之對(duì)FileField字段的upload_to的設(shè)定方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python3.9安裝RobotFramework的簡(jiǎn)單教程
python3.9安裝RobotFramework,不同于python2.7和python3.6,使用這兩個(gè)版本安裝會(huì)出現(xiàn)問題,因?yàn)槲野惭b遇到問題發(fā)現(xiàn)沒有最新的教程,所以打算自己寫一個(gè),同時(shí)下面會(huì)記錄安裝步驟及使用的方法會(huì)出現(xiàn)的一些問題,對(duì)python3.9安裝RobotFramework感興趣的朋友一起看看吧2023-01-01
python excel轉(zhuǎn)換csv代碼實(shí)例
這篇文章主要介紹了python excel轉(zhuǎn)換csv代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式
這篇文章主要介紹了Python中字節(jié)數(shù)組和16進(jìn)制字符串轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Python獲取好友地區(qū)分布及好友性別分布情況代碼詳解
利用Python + wxpy 可以快速的查詢自己好友的地區(qū)分布情況,以及好友的性別分布數(shù)量。還可以批量下載好友的頭像,拼接成大圖。感興趣的朋友跟隨小編一起看看吧2019-07-07

