標籤: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上傳圖片簡單驗證以及自動修改圖片名稱