প্রিয় বন্ধুরা , আশা করি সবাই ভাল আছেন । আজ আমি আপনাদের দেখাব , কীভাবে পাইথন দ্বারা ওয়েব ডেভলপমেন্ট এর কাজ করতে হয় । আসুন আমরা বিভিন্ন ধাপে ধাপে বিষয়গুলি ক্লিয়ার করি । পাইথনে এই কাজকে বলা হয় CGI প্রোগ্রামিং । এর মাধ্যমে ওয়েব সাইটের ফর্ম ভ্যালিডেশন, কুকি নিয়ে কাজ প্রভৃতি করা যায় । আসুন আমরা দেখি কীভাবে এই কাজ গুলো করতে হয় ।
মূলত এই কাজগুলো করতে হলে আপনাকে HTML সম্পর্কে হালকা পাতলা ধারণা রাখতে হবে । কারণ এই কাজটা করতে হবে মূলত HTML ও PYTHON এর সমন্বিত কাজের মাধ্যমে । আমাদের এই কাজের কনসেপ্ট হল বিভিন্ন কাজের জন্য একটা পাইথনের প্রোগ্রাম লিখে নেওয়া ও পরবর্তীতে HTML এর মাধ্যমে এটাকে ওয়েব সাইটের বিভিন্ন কাজে লাগানো ।
দেখূন , প্রথমে আমরা খুবই সহজ একটা পাইথনের ওয়েব স্ক্রিপ্ট লিখে ফেলি । সবাই লিখূন :
print ("Content-type:text/html\r\n\r\n") print( '<html>') print('<head>') print('<title>Hello Word - First CGI Program</title>') print( '</head>') print( '<body>') prin ('<h2>Hello Word! This is my first CGI program</h2>') print( '</body>') print('</html>')
এবং এর আউটপুট হবে নিচের মত :
Hello Word! This is my first CGI program
আর এর টাইটেল হবে নীচের মত ;
Hello Word - First CGI Program
দেখুন , যারা HTML জানেন তারা আশা করি বিষয়টা বুঝতে পেরেছেন । আর যারা জানেন না তারা দয়া করে HTML এর যেকোন টিউটোরিয়াল থেকে এর বেসিক কনসেপ্ট টা নিয়ে আসুন । না হলে এখানে HTML কোডগুলো বিস্তারিতভাবে ব্যাখ্যা করা সম্ভব না ।
যাই হোক , আমরা পাইথন ইউজ করে আমাদের ওয়েবের প্রথম কোডিং করে ফেললাম । এবার দেখি এর মাধ্যমে কীভাবে ফর্ম ভ্যালিডেশন এর কাজ করা যায় । সবাই নিচের কোডগুলো লিখুন ।
import cgi, cgitb form = cgi.FieldStorage() first_name = form.getvalue('first_name') last_name = form.getvalue('last_name') print( "Content-type:text/html\r\n\r\n") print( "<html>") print ("<head>") print ("<title>Hello - Second CGI Program</title>") print( "</head>") print( "<body>") print( "<h2>Hello %s %s</h2>" % (first_name, last_name)) print ("</body>") print ("</html>")
দেখুন , এখানে আমরা প্রথমে মডিউল ইমপোর্ট করে নিয়েছি । তারপর form = cgi.FieldStorage() কোডের মাধ্যমে আমরা এখানে ফর্মের জন্য ফিল্ড স্টোরেজ তৈরী করেছি । তারপরের ২ টা কোডের মাধ্যমে আমরা HTML ফর্মের থেকে ব্রাউজারের ইনপুট দেওয়া ডাটা নিয়েছি । এরপর HTML কোডগুলি লিখে ২য় হেডারের মধ্যে আমাদের ইনপুট নেওয়া ডাটা প্রিন্ট দিয়েছি । এখঅনে %s এর মান পরে ব্রাকেটের মধ্যে বলে দেওয়া হয়েছে যে তা উপরের ইনপুট নেওয়া ডাটা হবে । এবার এটাকে .py বা .cgi ফরম্যাটে সেভ করুন । তারপর এইটাকে ওয়েবসাইটে ইউজ করার জন্য আমাদের যে HTML কোড লাগবে তা দেখে নিই । HTML কোড দ্বারা আমরা মূলত একটা ডাটা ইনপুট ফিল্ড ক্রিয়েট করব , যার action এ দেওয়া থাকবে আমাদের উপরের প্রোগ্রামটি ।
<form action="/cgi-bin/hello_get.py" method="get"> First Name: <input type="text" name="first_name"> <br /> Last Name: <input type="text" name="last_name" /> <input type="submit" value="Submit" /> </form>
এবার দেখুন পাইথনের মাধ্যমে কীভাবে রেডিও বাটন , ড্রপ ডাউন মেনু বা টেক্সট ফিল্ড থেকে ডাটা নিতে হয় ।
রেডিও বাটন :
সবাই প্রথমে রেডিও বাটন তৈরী করার জন্য নিচের HTML কোডগুলি লিখুন :
<form action="/cgi-bin/radiobutton.py" method="post" target="_blank"> <input type="radio" name="subject" value="maths" /> Maths <input type="radio" name="subject" value="physics" /> Physics <input type="submit" value="Select Subject" /> </form>
দেখুন , এখানে একশনে আমরা একটা পাই ফাইলের কথা বলে দিয়েছি । উপরের কোডগুলো ২ টা রেডিও বাটন তৈরী করবে Maths ও Physics নামে । এবার দেখুন , এই রেডিও বাটন থেকে ডাটা নেবার জন্য আমাদের পাইথন স্ক্রিপ্ট :
import cgi, cgitb form = cgi.FieldStorage() if form.getvalue('subject'): subject = form.getvalue('subject') else: subject = "Not set" print( "Content-type:text/html\r\n\r\n") print ("<html>") print ("<head>") print ("<title>Radio - Fourth CGI Program</title>") print ("</head>") print ("<body>") print ("<h2> Selected Subject is %s</h2>" % subject) print( "</body>") print ("</html>")
দেখুন , এখান আমরা
if form.getvalue('subject'): subject = form.getvalue('subject') else: subject = "Not set"
এই কোডের মাধ্যমে বলেছি যে ফর্ম থেকে যে রেডিও বাটনের ডাটা ইনপুট পাবে তা subject নামের ভ্যারিয়েবল এর মধ্যে সংরক্ষন করতে , আর ডাটা না পাওয়া গেলে subject হবে Not set । অর্থাৎ এটাই প্রিন্ট করবে পরে । তারপর আমরা ২য় হেডারে গিয়ে আমাদের সাবজেক্ট প্রিন্ট করেছি ।
ড্রপ ডাউন মেনু :
প্রথমে দেখে নিই আমাদের ড্রপ ডাউন মেনুর জন্য তৈরী HTML কোড । সবাই নিচের কোড গুলি লিখূন :
<form action="/cgi-bin/dropdown.py" method="post" target="_blank"> <select name="dropdown"> <option value="Maths" selected>Maths</option> <option value="Physics">Physics</option> </select> <input type="submit" value="Submit"/> </form>
এবার এর ভ্যালিডেশন হল উপরের রেডিও বাটনের মতই একই । শূধূ HTML কোড অনুযায়ী ভ্যারিয়েবলের নাম গুলি পাল্টে দিন ।
টেক্সট এরিয়া :
সবাই এর জন্য HTML কোড গুলি লিখূন :
<form action="/cgi-bin/textarea.py" method="post" target="_blank"> <textarea name="textcontent" cols="40" rows="4"> Type your text here... </textarea> <input type="submit" value="Submit" /> </form>
এর পাইথন স্ক্রিপ্ট ও রেডিও বাটনের মতই একই । তবুএও এটা দিয়ে দিলাম :
# Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form = cgi.FieldStorage() # Get data from fields if form.getvalue('textcontent'): text_content = form.getvalue('textcontent') else: text_content = "Not entered" print( "Content-type:text/html\r\n\r\n") print ("<html>") print( "<head>") print( "<title>Text Area - Fifth CGI Program</title>") print ("</head>") print( "<body>") print( "<h2> Entered Text Content is %s</h2>" % text_content) print( "</body>)
ওয়েব সাইটে ফাইল আপলোড :
এবার আমরা দেখব পাইথন স্ক্রিপ্ট দিয়ে কীভাবে একটা ওয়েবসাইটে ফাইল আপলোড করতে হয় । এই কাজের জন্য সবার প্রথমে নিচের HTML কোড গুলি লিখে নিন ।
<html> <body> <form enctype="multipart/form-data" action="save_file.py" method="post"> <p>File: <input type="file" name="filename" /></p> <p><input type="submit" value="Upload" /></p> </form> </body> </html>
এটা মূলত বিভিন্ন ওয়েবসাইটে যেভাবে আপলোড বাটন সো করে সেটাই তৈরী করবে । এবার দেখি , এই আপলোড বাটনের মাধ্যমে কীভাবে কাজ করাত হয় পাইথন স্ক্রিপ্ট দ্বারা । এর জন্য সবাই নিচের পাইথনের কোডগুলো লিখূন :
import cgi, os import cgitb cgitb.enable() form = cgi.FieldStorage() fileitem = form['filename'] if fileitem.filename: fn = os.path.basename(fileitem.filename) open('/tmp/' + fn, 'wb').write(fileitem.file.read()) message = 'The file "' + fn + '" was uploaded successfully' else: message = 'No file was uploaded' print( """\ Content-Type: text/html\n <html> <body> <p>%s</p> </body> </html> """ % (message,))
দেখূন , এখান আমরা প্রথমে fileitem = form['filename'] কোডের দ্বারা এই নামের কোন ফাইল আছে কিনা তা চেক করেছি । তারপর if fileitem.filename কোড দ্বারা আমরা চেক করেছি যে ফাইলটি আপলোড হয়েছে কিনা । এখন তার পরের অংশটুকু দেখূন :
fn = os.path.basename(fileitem.filename) open('/tmp/' + fn, 'wb').write(fileitem.file.read()) message = 'The file "' + fn + '" was uploaded successfully' else: message = 'No file was uploaded'
প্রথমে আমরা ১ম কোডের মাধ্যমে ইউজার যে প্যাথ টা তে ফাইল দেখিয়ে দিয়েছে সেখানে গিয়েছি । এরপর open ফাংশনের মাধ্যমে ফাইলটা পড়ার ও লেখার জন্য ওপেন করেছি । এরপর write(fileitem.file.read()) কোডের মাধ্যমে আমরা ফাইলটা ওয়েব সার্ভারে আপলোড করে পড়েছি । এখন যদি এই প্রক্রিয়া সাকসেসফুল হয় , তাহলে প্রোগ্রামটা আমাদের message ভ্যারিয়েবলের মধ্যের লেখাটি সো করবে । আর কোন কারণে যদি এ প্রক্রিয়া সম্পন্ন না হয় তাহলে 'No file was uploaded' লেখাটি প্রিন্ট করবে ।
তারপরের অংশটুকু আমরা লিখেছি এই সমস্ত প্রক্রিয়াটিকে ওয়েবসাইটে HTML এর মাধ্যমে প্রকাশ করার জন্য ।
পাইথনে কুকি সেট করা :
আশা করি সবাই জানেন কুকি জিনিসটা কি ? না জানলে বলছি , আপনারা যখন কোন ওয়েবসাইট ভিজিট করেন , তখন ওয়েবসাইট আপনার ব্রাউজারে সয়ংক্রিয় ভাবে কিছূ ইনফরমেশন পাঠায় । সেগুলো আপনার ব্রাউজারে জমা থাকে ও পরবর্তী ভিজিটের সময় আপনার সেই সাইট ভিজিটের সয় আপনাকে চিনে নেয় । যাই হো , এবার দেখি কীভাবে পাইথনে এই কুকি সেট করতে হয় । সবাই নিচের কোড গুলি লিখুন । এটা আপনার ইউজার আইডি ও পাসওয়ার্ড এর কুকি । এভাবে আপনি অনেক কিছুই কুকি তৈরী করতে পারবেন ।
print ("Set-Cookie:UserID=XYZ;\r\n") print ("Set-Cookie:Password=XYZ123;\r\n") print ("Set-Cookie:Expires=Tuesday, 31-Dec-2007 23:12:40 GMT";\r\n") print ("Set-Cookie:Domain=www.techtunes.io;\r\n") print ("Set-Cookie:Path=/perl;\n") print( "Content-type:text/html\r\n\r\n")
দেখূন , print( "Content-type:text/html\r\n\r\n") লাইনটি যেখানে সব সময় HTML কোডের প্রথমে থাকে সেটা কিন্তু এ ক্ষেত্রে এই কোডের পরে থাকবে ।
প্রথমে আমরা Set-Cookie কোড দ্বারা ইউজার নেম ও পাসওয়ার্ড সেট করে দিয়েছি । তার পরের লাইনে আমরাএই কুকি কত দিন বা সময় পর্যন্ত কার্যকর থাকবে তা সেটা করেছি । তারপর ডোমেইনের নাম সেট করেছি। তারপর কুকির প্যাথ বলে দিয়েছি
। এভাবে, যেকোন ওয়েবসাইটের কুকি সেট করা যায় পাইথন দ্বারা ।
আজ এই পর্যন্তই । আর লিখলাম না । আজকের লেখাটা একটু বড়ই হয়ে গেল । কিছূ মনে কইরেন না।
আবার দেখা হবে । সমস্যা হলে বইলেন । চেষ্টা করব । আর পাইথনের বিভিন্ন সমস্যার ও রিসোর্স এর জন্য এই গ্রুপে জয়েন করতে পারেন ।
সবাই ভাল থাকবেন । ধন্যবাদ ।
আমি অরিন্দম পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 81 টি টিউন ও 316 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 20 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
মানসিক ভাবে দূর্বল । কোন কাজই কনফিডেন্টলি করতে পারি না , তবুও দেখি কাজ শেষ পর্যন্ত হয়ে যায় । নিজের সম্পর্কে এক এক সময় ধারণা এক এক রকম হয় । আমার কোন বেল ব্রেক নেই । সকালে যে কাজ করব ঠিক করি , বিকালে তা করতে পারি না । নিজের...
সত্যি ভাই আপনার জবাব নেই……… চমৎকার পোস্টের জন্য ধন্যবাদ