欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析

 更新時(shí)間:2019年05月10日 11:46:51   作者:微信1257309054  
這篇文章主要介紹了Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作,結(jié)合實(shí)例形式分析了Django框架文件上傳的原理、步驟、實(shí)現(xiàn)方法以及圖片上傳時(shí)自定義上傳路徑、上傳文件名的相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作。分享給大家供大家參考,具體如下:

文件上傳

1、創(chuàng)建上傳文件夾

在static文件夾下創(chuàng)建uploads用于存儲(chǔ)接收上傳的文件

在settings中配置,

MEDIA_ROOT=os.path.join(BASE_DIR,r'static/uploads')

2、定義上傳表單

<form action="{% url 'app:do_upload' %}" 
method="post" enctype="multipart/form-data">

文件數(shù)據(jù)存儲(chǔ)在request.FILES屬性中

文件上傳必須使用POST請(qǐng)求方式

<form method='post' action='x' enctype='multipart/form-data'>
 {% csrf_token %}
 <input type='file' name='icon'>
 <input type='submit' value='上傳'>
<form>

3、手動(dòng)存儲(chǔ)文件

存儲(chǔ)到關(guān)聯(lián)用戶的表字段中

def savefIcon(request):
if request.method == 'POST'
 f = request.FILES['icon']
 filePath = os.path.join(settings.MEDIA_ROOT,f.name)
 with open(filePath,'wb') as fp:
  for part in f.chunks():
   fp.write(part)

4、django內(nèi)置存儲(chǔ)

  • ImageField
    • 要導(dǎo)入pillow模塊
  • FileField
  • 從request.FILES將文件獲取出來(lái),直接賦值給字段
  • 存儲(chǔ)的時(shí)候,數(shù)據(jù)庫(kù)存儲(chǔ)的是路徑
  • 存儲(chǔ)在MEDIA_ROOT

自定義圖片上傳路徑和上傳文件名

圖片上傳中,如果不對(duì)上傳的文件名做處理,很容易引起文件名重復(fù),這會(huì)覆蓋之前上傳的圖片,django提供了自定義上傳文件名的方法。

def generate_filename(self, instance, filename):
 """
 Apply (if callable) or prepend (if a string) upload_to to the filename,
 then delegate further processing of the name to the storage backend.
 Until the storage layer, all file paths are expected to be Unix style
 (with forward slashes).
 """
 if callable(self.upload_to):
  filename = self.upload_to(instance, filename)
 else:
  dirname = datetime.datetime.now().strftime(self.upload_to)
  filename = posixpath.join(dirname, filename)
 return self.storage.generate_filename(filename)

上面的代碼是django中對(duì)ImageField上傳時(shí),生成文件名的處理方式。如果 upload_to 的參數(shù)是可調(diào)用的,則直接調(diào)用來(lái)生成文件名(包括靜態(tài)文件夾后的文件路徑)。要自定義上傳文件名就從這里著手。

import uuid
from django.db import models
def image_upload_to(instance, filename):
 return 'original_image/{uuid}/{filename}'.format(uuid=uuid.uuid4().hex, filename=filename)
class TestImageUpload(models.Model):
 image = models.ImageField(upload_to=image_upload_to)

按照上面的方式,就可以按照自己的意愿隨意的處理文件名了(函數(shù)的參數(shù)個(gè)數(shù)是固定的)。

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python實(shí)現(xiàn)雙色球隨機(jī)選號(hào)

    python實(shí)現(xiàn)雙色球隨機(jī)選號(hào)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙色球隨機(jī)選號(hào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • Python統(tǒng)計(jì)詞頻的幾種方法小結(jié)

    Python統(tǒng)計(jì)詞頻的幾種方法小結(jié)

    本文主要介紹了Python統(tǒng)計(jì)詞頻的幾種方法小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】

    Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】

    這篇文章主要介紹了Python中文分詞工具之結(jié)巴分詞用法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)中文文件的讀取與分詞操作過(guò)程中遇到的問(wèn)題與解決方法,需要的朋友可以參考下
    2017-04-04
  • python中讓自定義的類(lèi)使用加號(hào)"+"

    python中讓自定義的類(lèi)使用加號(hào)"+"

    這篇文章主要介紹了python中讓自定義的類(lèi)使用加號(hào)"+",如果對(duì)兩個(gè)對(duì)象直接“+”肯定是不行的,因?yàn)檫€沒(méi)有對(duì)CartoonImage類(lèi)重載加法運(yùn)算符__add__(),下文小編舉例形式講解該內(nèi)容,需要的下伙伴可以參考一下
    2022-03-03
  • python 安全地刪除列表元素的方法

    python 安全地刪除列表元素的方法

    這篇文章主要介紹了python 安全地刪除列表元素的方法,分享的方法有 創(chuàng)建新列表,過(guò)濾元素和列表副本上迭代,下面相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • 詳解pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題

    詳解pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題

    本文主要介紹了pyqt中解決國(guó)際化tr()函數(shù)不起作用的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 在tensorflow中實(shí)現(xiàn)屏蔽輸出的log信息

    在tensorflow中實(shí)現(xiàn)屏蔽輸出的log信息

    今天小編就為大家分享一篇在tensorflow中實(shí)現(xiàn)屏蔽輸出的log信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • SublimeText 2編譯python出錯(cuò)的解決方法(The system cannot find the file specified)

    SublimeText 2編譯python出錯(cuò)的解決方法(The system cannot find the file

    這篇文章主要介紹了SublimeText 2編譯python報(bào)The system cannot find the file specified錯(cuò)誤的解決方法,大家參考使用吧
    2013-11-11
  • 利用PyTorch實(shí)現(xiàn)VGG16教程

    利用PyTorch實(shí)現(xiàn)VGG16教程

    這篇文章主要介紹了利用PyTorch實(shí)現(xiàn)VGG16教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 用python搭建一個(gè)花卉識(shí)別系統(tǒng)

    用python搭建一個(gè)花卉識(shí)別系統(tǒng)

    這學(xué)期修了一門(mén)機(jī)器視覺(jué)的選修課,課設(shè)要是弄一個(gè)花卉識(shí)別的神經(jīng)網(wǎng)絡(luò),所以我網(wǎng)上找了開(kāi)源代碼進(jìn)行了修改,最后成功跑起來(lái),結(jié)果只有一個(gè)準(zhǔn)確率(94%)既然都跑了這個(gè)神經(jīng)網(wǎng)絡(luò)的代碼,那么干脆就把這個(gè)神經(jīng)網(wǎng)絡(luò)真正的使用起來(lái),把這個(gè)神經(jīng)網(wǎng)絡(luò)弄成一個(gè)可視化界面
    2021-06-06

最新評(píng)論