2010-10-05 25 views
11

HTML formundan bir python komut dosyasına nasıl POST verileceği hakkında bilgi almak için iyi bir kaynak bilen var mı?HTML formu Bir python betiğine POST?

+0

Bunu yapmayı öğrendiğim yer burası. http://webpython.codepoint.net/ – John

cevap

8

Çok basit bir CGI komut dosyası için cgi module'u kullanabilirsiniz.

#!/usr/bin/env python 

import cgi 
import cgitb; cgitb.enable() # for troubleshooting 

print "Content-type: text/html" 
print 

print """ 
<html> 

<head><title>Sample CGI Script</title></head> 

<body> 

    <h3> Sample CGI Script </h3> 
""" 

form = cgi.FieldStorage() 
message = form.getvalue("message", "(no message)") 

print """ 

    <p>Previous message: %s</p> 

    <p>form 

    <form method="post" action="index.cgi"> 
    <p>message: <input type="text" name="message"/></p> 
    </form> 

</body> 

</html> 
""" % message 
+0

Bir HTML/JS/php arka planından geliyorum ve kendimi karıştırıyorum. Yukarıdaki örnek hangi formattır? Bir tarayıcıya nasıl işaret edebilirim? – Skizit

+0

@Meowmix: Tam olarak php gibi ama python kullanıyor. Web sunucunuz tarafından yürütülür ve HTML sayfasını basit bir formla oluşturur. Form, betiğe geri gönderildiğinde, yalnızca gönderilen iletiyi geri oluşturur. –

1
: Yukarıdaki makaleden

Örnek: Bir POST ile gönderilen HTML formu nasıl ele alınacağı üzerinde çok temel bir örnek olarak Python belgelerine aşağıdaki makaleye göz atın

Ayrıca komut satırında kıvırmayı da kullanabilirsiniz.

curl -F "user=1" -F "fname=Larry" -F "lname=Luser" http://localhost:8080 

de diğer seçeneklerin ton vardır: Eğer sadece web sunucusuna bir form gönderme bir kullanıcıyı taklit etmek isteyen ediyorsanız, böyle bir şey yapmak istiyorum. IIRC, '-F', 'multipart/form-data' kullanır ve -F ile değiştirerek '--data', urlen kodlanmış form verisini kullanır. Hızlı bir test için harika. Dosyaları göndermek gerekiyorsa

Eğer

curl -F"@mypic.jpg" http://localhost:8080 

kullanabilirsiniz Ve bu değil, bir komut satırı için Python kullanmak zorunda, ben son derece 'afişi' modülünü tavsiye ediyoruz. http://atlee.ca/software/poster/ - bunu gerçekten çok kolay hale getirir (Biliyorum, çünkü bu modül olmadan yaptım ve başım ağrıyor).