১৪.৪ : ট্রান্সেকশন ভিউ তৈরী
আজকে আমরা একটা transaction ভিউ তৈরি করবো যেটাকে ইনহেরিট করে আমরা আমাদের ডিপোজিট, উইথড্র এর কাজ করবো।
যেহেতু loggedin কোনো ইউজার ছাড়া আমাদের ফরম কেউ ইউজ করতে পারবে না তাই আমরা LoginRequiredMixin এটাকে ইনহেরিট করলাম সেই সাথে যেহেতু প্রত্যেকবার ফরম ফিল আপ একটা করে নতুন transaction তৈরি হবে সেজন্যে আমরা class based ভিউ এর CreateView টা ইউজ করতেছি।
এরপর ভিউ এর মধ্যে template_name এখানে এখানে আমাদের টেমপ্লেট এর নাম দিবো।
model আমাদের মডেল এর নাম দিবো
title আমাদের প্রত্যেকটা ফরম এর টাইটেল দিবো, এটা বিল্ট ইন কোনো ভ্যারিয়েবল না, এটা আমরা তৈরি করলাম, কনটেক্সট হিসেবে pass করবো এই ডাটা কে।
success_url transaction কমপ্লিট হয়ে গেলে কোন url এ redirect হবে সেটা দিবো।
এখন get_form_kwargs এই ফাংশন এ আমরা আমাদের currently লগড ইন ইউজার এর ডাটা টা pass করে দিবো যাতে আমাদের forms.py এ আমরা ইউজার এর ব্যালান্স আর transaction related কিছু কাজ করতে পারি।
এখন প্রত্যেকটা ফরম এর যেহেতু টাইটেল থাকবে এটার কারণ হচ্ছে আমরা একটাই মাত্র ফরম ইউজ করবো সেজন্যে backend থেকে সেটার টাইটেল পাঠিয়ে দিবো frontend এ তাইলে এক্সট্রা ফরম ইউজ করা লাগলো না আর কোড টাও সিম্পল থাকলো। টাইটেল কে পাঠানোর জন্যে আমরা get_context_data ফাংশন টা ইউজ করবো এর সেখানে context টা কে ইনহেরিট করে সেটার মধ্যে title কে pass করে দিবো।
from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.views.generic import CreateView, ListView
from transactions.models import Transaction
class TransactionCreateMixin(LoginRequiredMixin, CreateView):
template_name = 'transactions/transaction_form.html'
model = Transaction
title = ''
success_url = reverse_lazy('transaction_report')
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs.update({
'account': self.request.user.account
})
return kwargs
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) # template e context data pass kora
context.update({
'title': self.title
})
return context
Last updated