Bagaimana untuk mendapatkan data dari halaman web menggunakan kaedah GET dan POST dalam skrip Python pada Windows


Program dan skrip Python boleh membuat permintaan dan menerima data daripada tapak web dan perkhidmatan web menggunakan kaedah GET dan POST (serta kaedah HTTP lain: PUT, PATCH dan DELETE).

Tetapi bagaimana jika anda ingin menghantar data dari halaman web ke skrip Python?

Ini boleh dilakukan dalam beberapa cara.

Bagaimana untuk mendapatkan data daripada halaman web menggunakan kaedah GET dan POST dalam skrip Python jika Python dikonfigurasikan sebagai modul CGI pelayan web Apache

Lihat juga: Cara memasang Python dan PIP pada Windows 10. Cara menyediakan Python sebagai modul pelayan web

Dalam direktori pelayan web, buat subfolder test-python.

Di dalamnya, kami akan mencipta fail HTML dengan nama test-form.htm dan kandungan berikut:

<!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>

Dalam subfolder yang sama, cipta fail program.py dengan kandungan berikut:

#!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>')

Penjelasan diberikan dalam komen kepada kod. Untuk mendapatkan data daripada borang, form.getvalue() digunakan.

Perhatikan baris pertama dengan “#!C:\python\python.exe” shebang – laluan ke fail python.exe mungkin berbeza dalam kes anda, jadi edit baris agar sesuai dengan pemasangan Python anda.

Buka alamat http://localhost/test-python/test-form.htm dan isikan data borang:

Mari hantar data ke pelayan. Seperti yang anda lihat, skrip Python berjaya menerima data borang yang dihantar melalui kaedah POST ke pelayan web.

Kod serupa digunakan untuk menerima data yang dihantar melalui kaedah GET – cuma tukar kaedah dalam baris

:

<!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>

Sila ambil perhatian bahawa skrip Python untuk digunakan dengan modul CGI pelayan web perlu dipertingkatkan: skrip mesti menghantar pengepala HTTP sebelum memaparkan data. Jika anda tidak menukar skrip Python, maka program akan gagal.