Ինչպես ստանալ տվյալներ վեբ էջից՝ օգտագործելով GET և POST մեթոդները Python սկրիպտում Windows-ում
Python ծրագրերն ու սկրիպտները կարող են հարցումներ կատարել և ստանալ վեբ կայքերից և վեբ ծառայություններից՝ օգտագործելով GET և POST մեթոդները (ինչպես նաև այլ HTTP մեթոդներ՝ PUT, PATCH և DELETE):
Բայց ի՞նչ, եթե ցանկանում եք վեբ էջից տվյալներ փոխանցել Python սկրիպտին:
Դա կարելի է անել մի քանի ձևով.
Ինչպես ստանալ տվյալներ վեբ էջից՝ օգտագործելով GET և POST մեթոդները Python սկրիպտում, եթե Python-ը կազմաձևված է որպես Apache վեբ սերվերի CGI մոդուլ:
Տես նաև. Ինչպես տեղադրել Python-ը և PIP-ը Windows 10-ում: Ինչպես կարգավորել Python-ը որպես վեբ սերվերի մոդուլ
Վեբ սերվերի գրացուցակում ստեղծեք test-python ենթաթղթապանակ:
Դրանում մենք կստեղծենք HTML ֆայլ՝ test-form.htm անունով և հետևյալ բովանդակությամբ.
<!DOCTYPE html> <head> <title>ZaLinux.ru: An example of running Python on a web server</title> </head> <body> <form action="program.py" method="post"> <label for="name">Name:</label> <input type="text" id="name" name="name"><br><br> <label for="email">Surname:</label> <input type="text" id="surname" name="surname"><br><br> <label for="message">Information:</label><br> <textarea id="info" name="info" rows="4" cols="30"></textarea><br><br> <input type="submit" value="Submit"> </form> </body> </html>
Նույն ենթաթղթապանակում ստեղծեք program.py ֆայլ հետևյալ բովանդակությամբ.
#!C:\python\python.exe # Import modules for CGI processing import cgi, cgitb # Create a FieldStorage instance form = cgi.FieldStorage() # Getting data from form fields name = form.getvalue('name') surname = form.getvalue('surname') info = form.getvalue('info') # HTTP header output print ('Content-type: text/html\r\n\r\n') # Output HTML code with received data print ('<html>') print ('<head>') print ('<title>ZaLinux.ru: An example of running Python on a web server</title>') print ('</head>') print ('<body>') print ('<em>Python script reports: </em>', '<br /><br />') print ('<b>Name: </b>', name, '<br />') print ('<b>Surname: </b>', surname, '<br />') print ('<b>Extra information: </b>', info, '<br />') print ('</body>') print ('</html>')
Բացատրությունները տրված են կոդի մեկնաբանություններում։ Ձևաթղթից տվյալներ ստանալու համար օգտագործվում է form.getvalue():
Ուշադրություն դարձրեք առաջին տողին՝ «#!C:\python\python.exe» shebang-ով. python.exe ֆայլի ուղին կարող է տարբեր լինել ձեր դեպքում, ուստի խմբագրեք տողը, որպեսզի համապատասխանի ձեր Python-ի տեղադրմանը:
Բացեք http://localhost/test-python/test-form.htm հասցեն և լրացրեք ձևի տվյալները.
Եկեք տվյալները ուղարկենք սերվերին: Ինչպես տեսնում եք, Python սկրիպտը հաջողությամբ ստացել է POST մեթոդով վեբ սերվերին ուղարկված ձևի տվյալները։
Նմանատիպ ծածկագիր օգտագործվում է GET մեթոդով ուղարկված տվյալներ ստանալու համար. պարզապես փոխեք մեթոդը տողում.
<!DOCTYPE html> <head> <title>ZaLinux.ru: An example of running Python on a web server</title> </head> <body> <form action="program.py" method="get"> <label for="name">Name:</label> <input type="text" id="name" name="name"><br><br> <label for="email">Surname:</label> <input type="text" id="surname" name="surname"><br><br> <label for="message">Information:</label><br> <textarea id="info" name="info" rows="4" cols="30"></textarea><br><br> <input type="submit" value="Submit"> </form> </body> </html>
Խնդրում ենք նկատի ունենալ, որ Python սկրիպտները վեբ սերվերի CGI մոդուլի հետ օգտագործելու համար պետք է բարելավվեն. նախքան տվյալները ցուցադրելը սկրիպտը պետք է ուղարկի HTTP վերնագիր: Եթե չփոխեք Python-ի սկրիպտը, ապա ծրագիրը կձախողվի: