বাংলায় জ্যাঙ্গো

পাইথনের ওয়েব ফ্রেমওয়ার্ক জ্যাঙ্গো ওয়েব সাইটে ছবি আপলোড করার জন্য ImageField() ব্যাবহার করা হয়।যেই ছবিটি আপলোড হয়ে settings.py ফাইলে দেখানো মিডিয়া রুট এ থাকবে এবং ছবিটি/ফাইলটি পুর্বের নামেই থাকবে। ফাইলের/ছবির নাম পরিবর্তন করতে models.py ফাইলে নিচের ফাংশন লিখে ফেলুন

# app/models.py
def imageFileRename(instance, filename):
    file_root, file_ext = os.path.splitext(filename)
    name = str(instance) + file_ext.lower()
    return name  

class Item:
      item_photo = models.ImageField(storage=OverwriteStorage(), upload_to=imageFileRename)

 

 # app/storage.py
from django.core.files.storage import FileSystemStorage
from django.conf import settings
import os

class OverwriteStorage(FileSystemStorage):

    def get_available_name(self, name):
        """Returns a filename that's free on the target storage system, and        available for new content to be written to.
        Found at http://djangosnippets.org/snippets/976/
        This file storage solves overwrite on upload problem. Another        proposed solution was to override the save method on the model        like so (from https://code.djangoproject.com/ticket/11663):
        def save(self, *args, **kwargs):            try:                this = MyModelName.objects.get(id=self.id)                if this.MyImageFieldName != self.MyImageFieldName:                    this.MyImageFieldName.delete()            except: pass            super(MyModelName, self).save(*args, **kwargs)        """        # If the filename already exists, remove it as if it was a true file system        if self.exists(name):
            os.remove(os.path.join(settings.MEDIA_ROOT, name))
        return name

Leave a Reply

avatar
  Subscribe  
Notify of