প্রিয় বন্ধুরা , আশা করি সবাই ভাল আছেন । আজ আমি আপনাদের দেখাব , কীভাবে পাইথন দ্বারা ওয়েব ডেভলপমেন্ট এর কাজ করতে হয় । আসুন আমরা বিভিন্ন ধাপে ধাপে বিষয়গুলি ক্লিয়ার করি । পাইথনে এই কাজকে বলা হয় CGI প্রোগ্রামিং । এর মাধ্যমে ওয়েব সাইটের ফর্ম ভ্যালিডেশন, কুকি নিয়ে কাজ প্রভৃতি করা যায় । আসুন আমরা দেখি কীভাবে এই কাজ গুলো করতে হয় ।
মূলত এই কাজগুলো করতে হলে আপনাকে HTML সম্পর্কে হালকা পাতলা ধারণা রাখতে হবে । কারণ এই কাজটা করতে হবে মূলত HTML ও PYTHON এর সমন্বিত কাজের মাধ্যমে । আমাদের এই কাজের কনসেপ্ট হল বিভিন্ন কাজের জন্য একটা পাইথনের প্রোগ্রাম লিখে নেওয়া ও পরবর্তীতে HTML এর মাধ্যমে এটাকে ওয়েব সাইটের বিভিন্ন কাজে লাগানো ।
দেখূন , প্রথমে আমরা খুবই সহজ একটা পাইথনের ওয়েব স্ক্রিপ্ট লিখে ফেলি । সবাই লিখূন :
1
2
3
4
5
6
7
8
9
| 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
আর এর টাইটেল হবে নীচের মত ;
Hello Word - First CGI Program
দেখুন , যারা HTML জানেন তারা আশা করি বিষয়টা বুঝতে পেরেছেন । আর যারা জানেন না তারা দয়া করে HTML এর যেকোন টিউটোরিয়াল থেকে এর বেসিক কনসেপ্ট টা নিয়ে আসুন । না হলে এখানে HTML কোডগুলো বিস্তারিতভাবে ব্যাখ্যা করা সম্ভব না ।
যাই হোক , আমরা পাইথন ইউজ করে আমাদের ওয়েবের প্রথম কোডিং করে ফেললাম । এবার দেখি এর মাধ্যমে কীভাবে ফর্ম ভ্যালিডেশন এর কাজ করা যায় । সবাই নিচের কোডগুলো লিখুন ।
1
2
3
4
5
6
7
8
9
10
11
12
13
| import cgi, cgitbform = 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 এ দেওয়া থাকবে আমাদের উপরের প্রোগ্রামটি ।
1
2
3
4
5
| <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 কোডগুলি লিখুন :
1
2
3
4
5
| <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 নামে । এবার দেখুন , এই রেডিও বাটন থেকে ডাটা নেবার জন্য আমাদের পাইথন স্ক্রিপ্ট :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| import cgi, cgitbform = 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>") |
দেখুন , এখান আমরা
1
2
3
4
| if form.getvalue('subject'): subject = form.getvalue('subject')else: subject = "Not set" |
এই কোডের মাধ্যমে বলেছি যে ফর্ম থেকে যে রেডিও বাটনের ডাটা ইনপুট পাবে তা subject নামের ভ্যারিয়েবল এর মধ্যে সংরক্ষন করতে , আর ডাটা না পাওয়া গেলে subject হবে Not set । অর্থাৎ এটাই প্রিন্ট করবে পরে । তারপর আমরা ২য় হেডারে গিয়ে আমাদের সাবজেক্ট প্রিন্ট করেছি ।
ড্রপ ডাউন মেনু :
প্রথমে দেখে নিই আমাদের ড্রপ ডাউন মেনুর জন্য তৈরী HTML কোড । সবাই নিচের কোড গুলি লিখূন :
প্রথমে দেখে নিই আমাদের ড্রপ ডাউন মেনুর জন্য তৈরী HTML কোড । সবাই নিচের কোড গুলি লিখূন :
1
2
3
4
5
6
7
| <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 কোড গুলি লিখূন :
সবাই এর জন্য HTML কোড গুলি লিখূন :
1
2
3
4
5
6
| <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> |
এর পাইথন স্ক্রিপ্ট ও রেডিও বাটনের মতই একই । তবুএও এটা দিয়ে দিলাম :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # Import modules for CGI handlingimport cgi, cgitb# Create instance of FieldStorageform = cgi.FieldStorage()# Get data from fieldsif 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 কোড গুলি লিখে নিন ।
1
2
3
4
5
6
7
8
9
| <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> |
এটা মূলত বিভিন্ন ওয়েবসাইটে যেভাবে আপলোড বাটন সো করে সেটাই তৈরী করবে । এবার দেখি , এই আপলোড বাটনের মাধ্যমে কীভাবে কাজ করাত হয় পাইথন স্ক্রিপ্ট দ্বারা । এর জন্য সবাই নিচের পাইথনের কোডগুলো লিখূন :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| import cgi, osimport 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 কোড দ্বারা আমরা চেক করেছি যে ফাইলটি আপলোড হয়েছে কিনা । এখন তার পরের অংশটুকু দেখূন :
1
2
3
4
5
| 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 এর মাধ্যমে প্রকাশ করার জন্য ।
পাইথনে কুকি সেট করা :
আশা করি সবাই জানেন কুকি জিনিসটা কি ? না জানলে বলছি , আপনারা যখন কোন ওয়েবসাইট ভিজিট করেন , তখন ওয়েবসাইট আপনার ব্রাউজারে সয়ংক্রিয় ভাবে কিছূ ইনফরমেশন পাঠায় । সেগুলো আপনার ব্রাউজারে জমা থাকে ও পরবর্তী ভিজিটের সময় আপনার সেই সাইট ভিজিটের সয় আপনাকে চিনে নেয় । যাই হো , এবার দেখি কীভাবে পাইথনে এই কুকি সেট করতে হয় । সবাই নিচের কোড গুলি লিখুন । এটা আপনার ইউজার আইডি ও পাসওয়ার্ড এর কুকি । এভাবে আপনি অনেক কিছুই কুকি তৈরী করতে পারবেন ।
আশা করি সবাই জানেন কুকি জিনিসটা কি ? না জানলে বলছি , আপনারা যখন কোন ওয়েবসাইট ভিজিট করেন , তখন ওয়েবসাইট আপনার ব্রাউজারে সয়ংক্রিয় ভাবে কিছূ ইনফরমেশন পাঠায় । সেগুলো আপনার ব্রাউজারে জমা থাকে ও পরবর্তী ভিজিটের সময় আপনার সেই সাইট ভিজিটের সয় আপনাকে চিনে নেয় । যাই হো , এবার দেখি কীভাবে পাইথনে এই কুকি সেট করতে হয় । সবাই নিচের কোড গুলি লিখুন । এটা আপনার ইউজার আইডি ও পাসওয়ার্ড এর কুকি । এভাবে আপনি অনেক কিছুই কুকি তৈরী করতে পারবেন ।
1
2
3
4
5
6
| 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.com.bd;\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 কোড দ্বারা ইউজার নেম ও পাসওয়ার্ড সেট করে দিয়েছি । তার পরের লাইনে আমরাএই কুকি কত দিন বা সময় পর্যন্ত কার্যকর থাকবে তা সেটা করেছি । তারপর ডোমেইনের নাম সেট করেছি। তারপর কুকির প্যাথ বলে দিয়েছি
। এভাবে, যেকোন ওয়েবসাইটের কুকি সেট করা যায় পাইথন দ্বারা ।
। এভাবে, যেকোন ওয়েবসাইটের কুকি সেট করা যায় পাইথন দ্বারা ।
