django上傳圖片簡單驗證以及自動修改圖片名稱

來源:互聯網
上載者:User

標籤:import   parent   ges   date   hashlib   elf   ora   article   尾碼   

django實現檔案(圖片)上傳之後自動修改名稱以及頁面上傳圖片時的各種提醒:

1、先在你項目中添加一個檔案夾如:system 在檔案夾下添加__init__.py 和storage.py檔案,並在storage.py中添加如下代碼:

# -*- coding:utf-8 -*-from django.core.files.storage import FileSystemStoragefrom django.http import HttpResponseclass ImageStorage(FileSystemStorage):    from django.conf import settings    def __init__(self,location=settings.MEDIA_ROOT, base_url=settings.MEDIA_URL):        #初始化        super(ImageStorage,self).__init__(location,base_url)    def _save(self,name,content):        #重新檔案上傳        import os,time,hashlib                #擷取檔案尾碼        ext = os.path.splitext(name)[1]        #檔案目錄        d = os.path.dirname(name)        #定義檔案夾名稱        fn = hashlib.md5(time.strftime(‘%Y%m%d%H%M%S‘).encode(‘utf-8‘)).hexdigest()        name = os.path.join(d,fn+ext)        #調用父類方法        return super(ImageStorage,self)._save(name,content)        

2、在models.py檔案中添加如下代碼:

from django.db import modelsfrom datetime import datetimefrom system.stroage import ImageStorage# Create your models here.#文章諮詢表class Article(models.Model):    title = models.CharField(max_length=250, null=False, verbose_name=‘標題‘, unique=True)    content = models.TextField(verbose_name=‘內容‘)    add_time = models.DateTimeField(verbose_name=‘添加時間‘, default=datetime.now)    update_time = models.DateTimeField(verbose_name=‘修改時間‘, null=True)    state = models.IntegerField(verbose_name=‘狀態‘, default=1)    cat_id = models.ForeignKey(Category, on_delete=models.CASCADE)    t = datetime.now()    cover_map = models.ImageField(verbose_name=‘縮列圖‘,upload_to=‘article/%Y/%m/%d‘,default=‘1.png‘,storage=ImageStorage())    class Meta:        verbose_name = ‘文章‘        ordering = [‘-add_time‘]    def __str__(self):        return self.title    def delete(self, using=None, keep_parents=False):        print(1111)

 

django上傳圖片簡單驗證以及自動修改圖片名稱

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.