Image Upload

django দিয়ে আমরা যেভাবে খুব সহজে ইমেজ আপলোড করতে পারি mongodb যখন django এর সাথে কাজ করবে তখন একটু ঘুরিয়ে কাজ করতে হবে তবে কঠিন কিছু না।

মনেকরি আমাদের Post নামে একটি মডেল আছে যার ডেটা আমরা mongodb তে store করি।

আমরা এই মডেল এ শুধু ইমেজ এর নাম সংরক্ষণ করে mongodb তে রাখবো (photoname )

class Post(Document) :
    title=StringField(max_length=200,blank=False)      
    content = StringField(blank=False)
    categories = ReferenceField(Category,default=Category.objects.first())
    tags= ListField(ReferenceField(Tags))    
    author = StringField(blank=True)
    created= DateField(default=datetime.today())
    photoname = StringField(max_length=255, blank=True)  # Store the photo filename

আমরা আমাদের forms.py তে এক্সট্রা একটি ফিল্ড নেব ইমেজ আপলোড করার জন্য যেই ফিল্ড তা আমাদের মডেল এ নেই।

from .models import Post            
class PostForm(DocumentForm)   :
    content = StringField()
    photo = forms.ImageField()  # Add the photo field

    class Meta:
        model=  Post
        exclude=['author','photoname','created']      

photo = forms.ImageField() এই ফিল্ডটা আমাদের মডেল এ নেই আমরা ফর্মের মাদ্ধমে ইমেজ আপলোড করে ইমেজের নামটি ফর্ম সাবমিট করার সময় আমাদের মডেলের photoname ফিল্ডে সেট করলে ইমেজের নামটি mongodb ডেটাবেজ এ সেভ হবে।

উপরের কোড অনুযায়ী ডেটাবেজ এ photoname ফিল্ডটি 'assets/media/' এর সাথে আপলোড করা ইমেজের নাম যোগ হয়ে সেভ হবে। যেমন ইমেজ এর নাম যদি হয় python.png তাহলে সেভ হবে assets/media/ python.png

ইমেজটি settings.MEDIA_ROOT অনুযায়ী আপলোড হবে যেহেতু ইমেজ এর লিংক assets/media/ python.png এভাবে সেভ করেছি তাই মিডিয়া সেটিং ও ঐভাবে করতে হবে।

আমাদের static ফোল্ডারের মধ্যে সেট করলাম

এবার html টেম্পলেট এ নিচের মত করে শো করবো।

Last updated