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

Uncategorized

transaction ব্যাবহার করে database roll back

by , on
September 28, 2017

অনেক সময় আমাদের কিছু কাজ একসাথে করতে হয়। যদি এই সমষ্টিগত কাজের কোন এক অংশ শেষ না হয় তাহলে আবার পুর্বের অবস্থায় ফিরিয়ে নেওয়াকে রোল ব্যাক বলে। যেমন ধরুন আপনি স্টুডেন্টের ডাটাবেজ তৈরী করছেন । আপনাকে এখন দুইটা টেবিলে ডাটা রাখতে হবে।

১। student_list

২্। student_profile

এখন শর্ত হল যদি দুইটা টেবিলেই ডাটা না ইনসার্ট হয় তাহলে কোন টেবিলেই ডাটা ইনসার্ট হবে না। কারন অনেক সময় student_list এ ডাটা ইনসার্ট হয়ে গেল কিন্তু student_profile এ ডাটা  ইনসার্ট করতে গিয়ে কোন সমস্যার কারনে ডাটা ইনসার্ট হল না। এখন তাহলে আমাদের student_list টেবিল থেকেও ডাটা ফিরিয়ে আনতে হবে। এই ধারনাটিকে বলে ডাটাবেজ রোলব্যাক।

জ্যাঙ্গো এই কাজটি খুব সহজে করার জন্য transaction নামে একটা মডিউল দিচ্ছে। tansaction.atomic ব্যাবহার করে কিভাবে কাজটি করা যায় দেখে নিই:

from django.db import transaction

@transaction.atomic
def create_student(request):
    Student.objests.create(...)
    StudentProfile.objects.create(...)

try, execption ব্যাবহার করে কাজটি করার জন্য

from django.db import transaction


def create_student(request):
    try:
        with transaction.atomic():
            Student.objests.create(...)
            StudentProfile.objects.create(...)
    except:
        do_something

 

আশা করি এখন খুব সহজে ডাটাবেজ roll back এর কাজটি করতে পারবেন

Uncategorized

ইমেইল পাঠানো

by , on
September 14, 2017

বাংলায় জ্যাঙ্গো টিউটোরিয়াল সিরিজে আপনাদেরকে স্বাগতম। আজকের পর্বে আমরা দেখব django mail ব্যাবহার করে কিভাবে আমরা  ইমেইল পাঠাবো। ইমেইল পাঠানোর জন্য বেশ কিছু পদ্ধতি রয়েছে। আমার কাছে সবচেয়ে সহজ যে পদ্ধতিটি মনে হয়েছে তা তুলে ধরলাম।

Django mail ব্যাবহার করে খুব সহজে ইমেইল পাঠানো যায়। এজন্য আমাদের একটি ইমেইল গেটওয়ে লাগবে যার মাধ্যমে ইমেইল আদান প্রদান হবে। sendgrid আমাদেরকে বিনামুল্যে এই সুবিধা প্রদান করে।
Sendgrid.com এ গিয়ে সাইনআপ করি।
Settings.py এ যোগ করি

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'your_sendgrid_username'
EMAIL_HOST_PASSWORD = 'your_sendgrid_password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

ইমেইল ফাংশন

from django.core.mail import send_mail

send_mail(
'Subject here',
'Here is the message.',
'[email protected]',
['[email protected]'],
fail_silently=False,
)

Shell এ টেষ্ট করি

Python manage.py shell

from django.core.mail import send_mail

send_mail('my test mail subject','banglai-django test mail body', '[email protected]', ['[email protected]'])

লক্ষ করুন manage.py যেখানে আছে আপনার টার্মিনাল সেই ডিরেক্টরীতেই আছে। to_email একটি লিষ্ট হবে । এখানে একাধিক ইমেইল যোগ করা যাবে। নিজের ইমেইল দিয়ে পরিক্ষা করুন আপনি ইমেইল পাচ্ছেন কিনা।

এখন একটি ফর্ম তৈরী করুন যেখানে from_email, to_email, body তিনটি ফিল্ড থাকবে । পুরন করে সেন্ড চাপলে ইমেইল চলে যাবে।

কোড করা শেষ হলে আমার কোডের সাথে মিলিয়ে নিন।