চতুর্থ অধ্যায়
টিউটোরিয়াল - চতুর্থ অধ্যায়
তৃতীয় অধ্যায়ে আমরা যেখানে শেষ করেছি সেখান থেকেই আমরা চতুর্থ অধ্যায় শুরু করবো । আগের অধ্যায়গুলোর বিষয়বস্তু চোখ বুলিয়ে নিলে এই অধ্যায়টি আত্মস্থ করতে সুবিধা হবে।
জ্যাঙ্গোয় ফর্ম তৈরি করা
ওয়েব এ্যাপ্লিকেশন ডেভেলপ করতে গেলে আমাদেরকে কম বেশি ফর্ম নিয়ে কাজ করতে হয় । ফর্মের মাধ্যমে ব্যবহারকারী ইনপুট প্রদান করতে পারেন । যাদের HTML এর জ্ঞান আছে তারা ইতোমধ্যে <form>
এর সাথে পরিচিত । জ্যাঙ্গোয় আমরা কিভাবে ফর্ম ডাটা হ্যান্ডল করতে পারি সেটা দেখবো । আসুন poll/detail.html
টেম্প্লেটটিতে নিচের মত করে কোড যোগ করে নেই -
{{ poll.question }}
এখানে আসলে কি করলাম আমরা?
প্রতে্যকটা
choice
এর জন্য আমরা একটি করে রেডিও বাটন বসালাম । যখন ব্যবহারকারী যে কোন অপশন নির্বাচন করে ফর্মটি সাবমিট করবে তখন আমরাPOST
ডাটা হিসেবে পাবো এমন কিছু একটা -choice=3
। (বিষয়টি আরো বিশদভাবো বোঝার জন্য HTML এবং<form>
সম্পর্কে ভালো করে জানা প্রয়োজন)ফর্ম এর
action
হিসেবে আমরা ব্যবহার করেছি{ % url 'polls:vote' poll.id %}
এবংmethod
হিসেবেpost
।url
একটি টেম্প্লেট ট্যাগ যেটিpolls:vote
এবংpoll.id
এর মান ব্যবহার করে সঠিক url টি আউটপুট দিবে ।forloop.counter
দিয়ে আমরা বুঝতে পারিfor
লুপ এ ঠিক কতোবার লুপ ঘটেছেজ্যাঙ্গো স্বাভাবিকভাবে Cross Site Request Forgery ঠেকানোর চেষ্টা করে । এজন্য প্রতিটি ফর্মে
{ % csrf_token %}
থাকা অত্যাবশ্যক । এটি না থাকলে জ্যাঙ্গো ধরে নেয় রিকুয়েস্টটিতে কোন ঘাপলা আছে এবং সে আর এটা প্রসেস করে না । যদিও এটা ডিজএ্যাবল করা যায় কিন্তু এটা ব্যবহার করা উচিৎ ।
আমরা আগের অধ্যায়ে নিচের URLconf টি তৈরি করেছিলাম -
সাথে সাথে আমরা একটি ডামি ভিউও তৈরি করেছিলাম যেটা আসলে তেমন কোন কাজই করতো না । এবার আমরা এই ভিউটিকে পরিবর্তন করে নিবো নিচের মত করে -
এখানে কি করছি আমরা?
request.POST
হচ্ছে পাইথন ডিকশনারী । এখানে সব ডাটা কি-ভ্যালু জোড় হিসেবে থাকে । যেমন:request.POST['choice']
থেকে আমরাchoice
এর মান পেতে পারি । যদি POST ডাটায়choice
না থাকে তবে জ্যাঙ্গোKeyError
রেইজ করবে । একারণেই আমরা try…except ব্লক ব্যবহার করেছি ।এখানে আমরা
HttpResponse
না পাঠিয়েHttpResponseRedirect
রিটার্ন করছি । এটার মাধ্যমে কোন আউটপুট না দেখিয়ে আমরা ব্যবহারকারীকে অন্য ঠিকানায় পাঠিয়ে দিতে পারি ।reverse()
ফাংশনটি{ % url %}
টেম্প্লেট ট্যাগের মত করেই ভিউ এর নাম থেকে পূর্ণ URL রিটার্ন করে ।
এখন এ্যাপ্লিকেশনে কেউ ভোট দিলে আমরা results()
ভিউতে রিডিরেক্ট করে দিবে । আসুন সেই ভিউটি তৈরি করে নেই এবার -
এবার ভিউটির জন্য টেম্প্লেট তৈরি করে নেই -
{{ poll.question }}
{ % for choice in poll.choice_set.all %}
{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}
{ % endfor %}
এবার এ্যাপ্লিকেশনটি রান করুন এবং ভোট দিয়ে দেখুন কেমন কাজ করে ।
শেষ কথা
এই ৪টি অধ্যায় ভালো করে রপ্ত করতে পারলে জ্যাঙ্গো ব্যবহার করে সাধারণ ওয়েবসাইট খুব সহজেই তৈরি করতে পারবেন । তবে এখানেই থেমে থাকলে চলবে না । এই টিউটোরিয়ালটি নবীনদের কথা চিন্তা করে অফিশিয়াল টিউটোরিয়াল থেকে বেশ পরিবর্তন পরিবর্ধন করে লেখা হয়েছে । তাই অধিকাংশ সময়েই বেস্ট প্র্যাক্টিসের চাইতে সহজবোধ্যতার উপরে জোর দেওয়া হয়েছে । জ্যাঙ্গোর এ্যাডভান্সড কনসেপ্টগুলো আয়ত্ব করতে পারলে এই কাজগুলো করা যায় আরো সহজে, আরো সুন্দর করে ।
জ্যাঙ্গোর নানা ফিচার, বেস্ট প্র্যাকটিস কিংবা এ্যাডভান্সড অনেক কনসেপ্ট নিয়ে আলাদা আলাদা ভাবে আলোচনা করা হবে এই বইয়ের অন্য অংশে ।
এই টিউটোরিয়াল ফলো করে তৈরি করা একটি স্যাম্পল এ্যাপ্লিকেশন পাওয়া যাবে শিবলি ভাইয়ের গিট রেপোতে - https://github.com/Shibly/Poll :)
Last updated