1. 程式人生 > >django 自定義圖片上傳路徑和上傳檔名

django 自定義圖片上傳路徑和上傳檔名

圖片上傳中,如果不對上傳的檔名做處理,很容易引起檔名重複,這會覆蓋之前上傳的圖片,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中對ImageField上傳時,生成檔名的處理方式。如果 upload_to 的引數是可呼叫的,則直接呼叫來生成檔名(包括靜態資料夾後的檔案路徑)。要自定義上傳檔名就從這裡著手。

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)

按照上面的方式,就可以按照自己的意願隨意的處理檔名了(函式的引數個數是固定的)。

相關推薦

django 定義圖片路徑檔名

圖片上傳中,如果不對上傳的檔名做處理,很容易引起檔名重複,這會覆蓋之前上傳的圖片,django提供了自定義上傳檔名的方法。 def generate_filename(self, instance, filename): """ Ap

Django定義圖片檔案路徑(upload_to)的2種方式

最近在做一個仿知乎網站的專案了,裡面涉及很多圖片和檔案上傳。趁此機會我給大家總結下Django自定義圖片和檔案上傳路徑的2種方式吧。方法1: 在Django模型中定義upload_to選項。Django

Django定義UserModel並實現認證登錄

eric one email post blog rac ner self object 自定義UserModel 環境:django 1.9.11+python 2.7 from django.contrib.auth.models import AbstractUse

18 Django - 定義分頁、FBVCBV

Django - 自定義分頁、FBV和CBV     一、自定義分頁(優勢在於能夠儲存搜尋條件)   """ 分頁元件使用示例: 1) 先取出所有資料USER_LIST 2) 例項化:

Robot Framework定義庫的載入路徑順序

1、自定義庫的載入路徑: windows可以載入專案路徑內的自定義庫,或者python的site-packages下面的自定義庫。 linux只能載入python的site-packages下面的自定義庫。 2、自定義庫的載入優先順序: windows下

Ueditor定義圖片路徑,以及圖片回顯路徑

最近發現Ueditor有個小bug,每次圖片都上傳到專案路徑下,當重新發佈一個版本後,圖片就沒了,所以決心修改結構如下:1. 首先,進入config.json,修改如下:其他的都不改,只改選中部分,這個是圖片訪問路徑字首我們要關注的是【檔案訪問路徑】和【檔案上傳路徑】然後,分

ckeditor添加定義按鈕整合swfupload實現批量圖片

下載 了解 nbsp 文件 mouseover 去掉 dial size pro ckeditor添加自定義按鈕整合swfupload實現批量上傳圖片給ckeditor添加自定義按鈕,由於ckeditor只能上傳一張圖片,如果要上傳多張圖片就要結合ckfinder,而ckf

ueditor 編輯器,定義圖片

action () scree val ech idt tof height 使用 <div> <h1>完整demo</h1> <form method="post" name="form">

vue定義圖片預覽功能

//vue裡面的HTML程式碼 <div id="modificationPreview">         <input type="file" accept="image/*" @change="changeFile" id="m

在Vue專案使用quill-editor帶樣式編輯器(更改插入圖片視訊) 運用vue-quilt-editor編寫富文字編輯器 定義圖片路徑 獲取後臺返回路徑

一、首先在main.js  引入 vue-quilt-editorimport VueQuillEditor from 'vue-quill-editor'import 'quill/dist/quill.core.css'import 'quill/dist/quill.s

改造Kindeditor之:定義圖片外掛。 外加給圖片增加水印效果的選擇。

場景: 編輯部人士編輯文章時需要在文章中上傳圖片。但上傳圖片時需要增加是否增加水印的選擇(有可能是自己公司的原創作品)。所以需要改造Kindeditor . 1: 刪除Kindeitor 預設的引數物件裡的Image  新增自定bareheadimage 有原來的 item

vue-quill-editor定義圖片

我們通常都會使用富文字編輯器在後臺編輯內容,開發vue當然也少不了,我們通過vue官網的連結可以找到一些資源,或者去github上查詢一些開源的編輯器。我使用的是vue-quill-editor,它的介面很簡潔,功能也滿足平時的編輯需要,不過於臃腫,但是它預設的圖片上傳是使

html+css實現定義圖片按鈕

普通的input[type=‘file’]的效果很樸素 可以自定義一個file選擇檔案的按鈕: 思路為: 用定位將自定義的按鈕遮住原來的選擇檔案按鈕, 再讓點選自定義按鈕時觸發原來的選擇檔案按鈕的事件即可 (對此,label可實現) eg: html: css樣式: 結果圖:

Vue Quill Editor定義圖片/視訊(Element UI + OSS)、字型、字型大小、段落等

  近期專案中需要使用富文字編輯器,開始想到的富文字編輯器是百度的UEditor,UEditor功能齊全、外掛多,但是圖片只能上傳到本地伺服器,如果需要上傳到其他伺服器需要改動原始碼,而且是PHP、JSP、ASP、.Net版本,同時UEditor體積過大壓縮包有

quill定義圖片

quill是個不錯的富文字編輯器,但是它的圖片上傳是直接將本地圖片讀成base64跟文字混合在一起,這顯然不適合一般開發需求,我們希望插入的是一個圖片url,故這裡將基於vue.js實現quill的圖片上傳功能。 沒有什麼好說的,直接貼程式碼 quillEditor.vue

Django定義模板標簽過濾器

註冊 rar 參考資料 AD return mar load ... cnblogs inclusion_tag() 在app中新建一個templatetags包(名字固定,不能變,只能是這個), 和views.py、models.py等文件處於同一級別目錄下。 這是一個包

django-定義過濾器(simple_tagfilter)

title gis 定義 tle filter www simple bsp djang 關於Django的模板這裏有詳細介紹http://www.runoob.com/django/django-template.html 1、在app下創建templatetags的目錄

Django(定義過濾器定義標簽)

bsp replace 取數據 獲取 key-value cut ext 兩個 rom 模版是一個用django模版語言標記過的python字符串。模版可以包含模版標簽和變量。 模版標簽是在一個模版裏起作用的標記。比如,一個模版標簽可以產生控制結構的內容(if或者

django定義模板過濾器

-自定義過濾器 -1 先app是不是已經在setting中註冊 -2 在app下建立一個templatetags(****名字不能變***)的資料夾(模組) -3 在模組下建立一個py檔案,名字隨意:mytag.py

Django定義過濾器標籤

Django的模板語言包含了各種各樣的內建標籤和過濾器來滿足你的應用需求,不過有時候你也會發現你的需要的功能不在內建的功能中,這時候你可以通過Python語言自定義標籤和過濾器來擴充套件模板引擎,然後在你的模板中使用 {% load %} 來載入使用它們。 首先建立好包檔案: 在你的app下