পিএইচপি-তে আপনি কেবল $_POST
পোস্টের $_GET
জন্য এবং জিইটি (কোয়েরি স্ট্রিং) ভেরিয়েবলের জন্য ব্যবহার করতে পারেন । পাইথন সমতুল্য কি?
পিএইচপি-তে আপনি কেবল $_POST
পোস্টের $_GET
জন্য এবং জিইটি (কোয়েরি স্ট্রিং) ভেরিয়েবলের জন্য ব্যবহার করতে পারেন । পাইথন সমতুল্য কি?
উত্তর:
মনে করুন আপনি এটির সাথে এইচটিএমএল ফর্ম পোস্ট করছেন:
<input type="text" name="username">
যদি কাঁচা সিজি ব্যবহার করেন :
import cgi
form = cgi.FieldStorage()
print form["username"]
ব্যবহার যদি জ্যাঙ্গো , pylons , বোতল বা পিরামিড :
print request.GET['username'] # for GET form method
print request.POST['username'] # for POST form method
টার্বোগার্স ব্যবহার করে , চেরিপি :
from cherrypy import request
print request.params['username']
Web.py :
form = web.input()
print form.username
print request.form['username']
চেরিপি বা টার্বোগার্স ব্যবহার করে, আপনি সরাসরি কোনও পরামিতি গ্রহণ করে আপনার হ্যান্ডলার ফাংশনটিও সংজ্ঞায়িত করতে পারেন:
def index(self, username):
print username
class SomeHandler(webapp2.RequestHandler):
def post(self):
name = self.request.get('username') # this will get the value from the field named username
self.response.write(name) # this will write on the document
সুতরাং আপনাকে সত্যিই সেই ফ্রেমওয়ার্কগুলির একটি বেছে নিতে হবে।
import cgi
, তাই না print form["username"].value
?
Bottle
করি যা আমি বিশ্বাস করি ব্যবহারগুলি wsgi
, কেউ কি সেই পরিস্থিতিতে ব্যবহারের সমতুল্য পোস্ট করতে পারে? উপরের প্রতিক্রিয়াটি আমি পরিস্কারভাবে ব্যাখ্যা নিয়ে এসেছি, এটিতে আমার দৃশ্যের অন্তর্ভুক্ত নেই।
আমি জানি এটি একটি পুরানো প্রশ্ন। তবুও এটি আশ্চর্যজনক যে কোনও ভাল উত্তর দেওয়া হয়নি।
সবার আগে প্রশ্নটির কাঠামোর উল্লেখ না করে পুরোপুরি বৈধ। কনটেক্সট একটি পিএইচপি ভাষার সমতুল্য। পাইথনে ক্যোরি স্ট্রিং প্যারামিটারগুলি পাওয়ার অনেকগুলি উপায় থাকলেও ফ্রেমওয়ার্ক ভেরিয়েবলগুলি কেবল সুবিধামতভাবে পপুলেটেড। পিএইচপি-তে, $_GET
এবং $_POST
সুবিধার ভেরিয়েবলগুলিও রয়েছে। এগুলি যথাক্রমে QUERY_URI এবং php: // ইনপুট থেকে পার্স করা হয়েছে।
পাইথনে, এই ফাংশনগুলি হবে os.getenv('QUERY_STRING')
এবং sys.stdin.read()
। ওএস এবং সিস মডিউলগুলি আমদানি করতে মনে রাখবেন।
আমাদের এখানে "সিজিআই" শব্দটি সম্পর্কে সতর্কতা অবলম্বন করতে হবে, বিশেষত ওয়েব সার্ভারের সাথে ইন্টারফেস করার সময় দুটি ভাষা এবং তাদের সাধারণতার বিষয়ে কথা বলার সময়। ১. সিজিআই, প্রোটোকল হিসাবে, এইচটিটিপি প্রোটোকলে ডেটা পরিবহন প্রক্রিয়াটি সংজ্ঞায়িত করে। ২. পাইগনকে অ্যাপাচে সিজিআই-স্ক্রিপ্ট হিসাবে চালনার জন্য কনফিগার করা যেতে পারে। ৩. পাইথনের সিজিআই মডিউলটি কিছু সুবিধাজনক ফাংশন সরবরাহ করে।
যেহেতু এইচটিটিপি প্রোটোকলটি ভাষা-স্বতন্ত্র, এবং অ্যাপাচের সিজিআই এক্সটেনশনটিও ভাষা-স্বতন্ত্র, জিইটি এবং পোষ্ট প্যারামিটারগুলি ভাষাগুলিতে কেবল বাক্যবিন্যাসের পার্থক্য বহন করে।
জিইটি অভিধান তৈরি করতে পাইথনের রুটিনটি এখানে:
GET={}
args=os.getenv("QUERY_STRING").split('&')
for arg in args:
t=arg.split('=')
if len(t)>1: k,v=arg.split('='); GET[k]=v
এবং পোস্টের জন্য:
POST={}
args=sys.stdin.read().split('&')
for arg in args:
t=arg.split('=')
if len(t)>1: k, v=arg.split('='); POST[k]=v
আপনি এখন নিম্নলিখিত হিসাবে ক্ষেত্রগুলি অ্যাক্সেস করতে পারেন:
print GET.get('user_id')
print POST.get('user_name')
আমার আরও উল্লেখ করতে হবে যে সিজিআই মডিউলটি ভাল কাজ করে না। এই HTTP অনুরোধ বিবেচনা করুন:
POST / test.py?user_id=6
user_name=Bob&age=30
ব্যবহারের CGI.FieldStorage().getvalue('user_id')
ফলে একটি নাল পয়েন্টার ব্যতিক্রম ঘটবে কারণ মডিউল অন্ধভাবে পোষ্টের ডেটা পরীক্ষা করে, কোনও পোস্টের অনুরোধ জিইটি প্যারামিটার বহন করতে পারে এই বিষয়টি উপেক্ষা করে।
AttributeError: 'NoneType' object has no attribute 'split'
ব্যবহার CGI
সঙ্গে Python
2.7
POST.get('user_name', 'default_value')
।
আমি নসক্লো এর উত্তর খুব বিস্তৃত এবং দরকারী খুঁজে পেয়েছি! তাদের মতো, আমার মতো যারাও কাঁচা অনুরোধের ডেটা সরাসরি ব্যবহার করতে পারে বলে মনে হতে পারে, আমি এটি করার উপায় যুক্ত করতে চাই:
import os, sys
# the query string, which contains the raw GET data
# (For example, for http://example.com/myscript.py?a=b&c=d&e
# this is "a=b&c=d&e")
os.getenv("QUERY_STRING")
# the raw POST data
sys.stdin.read()
http://www.myserver.com/cgi-bin/cgi.py/ThisIsMyMethod
। নিম্নলিখিত পরিবেশগত পরিবর্তনগুলি সম্পর্কিত: os.environ.get('PATH_INFO')
যা পদ্ধতির নাম পায় (যেমন: / ThisIsMyMethod) এবং os.environ.get('SCRIPT_NAME')
যা ওয়েব হোস্টের মূল ফোল্ডার (যেমন: /cgi-bin/cgi.py) থেকে স্ক্রিপ্টের পথ সরবরাহ করে। আমার ক্ষেত্রে, QUERY_STRING ফাঁকা, যেমন আমি পোস্ট ব্যবহার করছি।
সেগুলি সিজিআই ফিল্ডস্টোরেজ অবজেক্টে সঞ্চিত রয়েছে।
import cgi
form = cgi.FieldStorage()
print "The user entered %s" % form.getvalue("uservalue")
এটি আপনি সিজিআই কাঠামো হিসাবে কী ব্যবহার করেন তার উপর কিছুটা নির্ভর করে তবে সেগুলি প্রোগ্রামে অ্যাক্সেসযোগ্য অভিধানে উপলব্ধ। আমি আপনাকে দস্তাবেজের দিকে নির্দেশ করব, তবে আমি এখনই পাইথন.আর.গুয়েজ পাচ্ছি না। তবে mail.python.org এ এই নোটটি আপনাকে প্রথম পয়েন্টার দেবে । আরও জন্য সিজিআই এবং ইউআরএলএলআইবি পাইথন লাইবস দেখুন।
হালনাগাদ
ঠিক আছে, সেই লিঙ্কটি ফাঁস হয়ে গেল। এখানে বেসিক wsgi রেফ
পাইথন কেবল একটি ভাষা, জিইটি এবং পোষ্ট ডেটা পেতে আপনার পাইথনে লিখিত একটি ওয়েব ফ্রেমওয়ার্ক বা টুলকিট দরকার। জাজানো অন্যতম, চার্লি যেমন উল্লেখ করেছেন, সিজি এবং ইউরালিব মানক মডিউলগুলি অন্য। এছাড়াও পাওয়া যাচ্ছে টার্বোগার্স, পাইলনস, চেরিপাই, ওয়েব.পি, মোড_প্যাথন, ফাস্টকিজি ইত্যাদি etc.
জ্যাঙ্গোতে, আপনার দর্শনীয় ফাংশনগুলি অনুরোধের যুক্তিটি গ্রহণ করে যার অনুরোধ রয়েছে G জিইটি এবং অনুরোধ Pপষ্ট করুন। অন্যান্য ফ্রেমওয়ার্কগুলি এটি ভিন্নভাবে করবে।