১১-১ : ক্রিয়েট ভিউ
Last updated
Last updated
গত মডিউলগুলোতে আমরা views.py ফাইলগুলোতে ফাংশন লিখে ফাংশনগুলিকে urls.py ফাইল থেকে ইনভোক করেছি, অন্যভাবে বললে ফাংশনাল ভিউ ব্যবহার করেছি-
এই মডিউলে অনুরুপ কাজগুলো ক্লাস ভিউ ব্যবহার করে করব। অর্থ্যাৎ, views.py ফাইলে এখন ফাংশনের পরিবর্তে ক্লাস লিখে অনুরুপ কাজগুলো করব। ক্লাস ভিউ সম্পর্কে জানতে এই সাইটটি ব্রাউজ করে দেখার জন্য অনুরোধ করা হলো - https://ccbv.co.uk/
দেখতে পাচ্ছি, অনেক ধরনের ক্লাস ভিউ রয়েছে, নির্দিষ্ট কাজের জন্য সবচেয়ে উপযোগী ক্লাস ভিউ -টা ব্যবহার করা সুবিধাজনক হবে।
শুরুতেই posts/views.py এর add_post( ) ফাংশনকে ক্লাস ভিউ তে রুপান্তর করতে চাচ্ছি। add_post( ) ফাংশনে Post ক্রিয়েট করার কাজ করেছিলাম, তাহলে এক্ষেত্রে CreateView ব্যবহার করার অধিক উপযোগী।
Code:: 11.1.1 posts/views.py
CreateView ক্লাসকে ইনহেরিট করার AddPostCreateView ক্লাসকে একটি ক্রিয়েটভিউ ক্লাসে রুপান্তর করা হয়েছে ।
CreateView ক্লাসের এ্যাট্রিবিউট model এর ভ্যালু Post সেট করা হয়েছে। সুতরাং, Post মডেলের অবজেক্ট বা রেকর্ড বা ইনস্ট্যান্স তৈরি করে ডেটাবেজে সেভ করা হবে
CreateView ক্লাসের এ্যাট্রিবিউট form_class এর ভ্যালু PostForm সেট করা হয়েছে, সুতরাং, PostForm ফর্ম থেকে প্রাপ্ত ডেটা নির্দিষ্ট মডেলে ( এক্ষেত্রে , Post মডেলে ) সেভ করা হবে
CreateView ক্লাসের এ্যাট্রিবিউট template_name এর ভ্যালু 'add_post.html' সেট করা হয়েছে, সুতরাং, নির্দিষ্ট ফর্মটি ( এক্ষেত্রে , PostForm ) 'add_post.html' টেমপ্লেট ফাইলে দেখানো হবে
CreateView ক্লাসের এ্যাট্রিবিউট success_url এর ভ্যালু reverse_lazy('add_post') সেট করা হয়েছে, সুতরাং নির্দিষ্ট ফর্মটি ( এক্ষেত্রে , PostForm ) সঠিকভাবে সাবমিট করার পর 'add_post' নামক URL-প্যাটার্নে রিডিরেক্ট করা হবে
এরপর, ফর্মের ভ্যালিডিটি চেক করার জন্য CreateView ক্লাসের মেথড form_valid ব্যবহার করা হয়েছে এবং ফর্মটি ভ্যালিড হলে Post মডেলের author ফিল্ডের ভ্যালু হিসেবে request অবজেক্ট থেকে প্রাপ্ত user কে সেট করা হয়েছে ।
posts/urls.py ফাইলের URL-প্যাটার্ন এডিট করে নিচের মত করে লিখি -
এখন প্রজেক্ট রান করে http://127.0.0.1:8000/post/add/ URL এ গিয়ে নিচের মত ইনপুট দেই-
দেখতে পাচ্ছি, ক্লাস-বেসড ভিউ , ক্রিয়েট ভিউয়ের মাধ্যমে এ্যাড করা Post টি সফল্ভাবে এ্যাড হয়েছে-