2016-04-05 11 views
-1

Ich habe ein Problem mit meinem Python-Skript mit HTML.Wie schreibe ich Python-Skript in Kolben

Ich bin Neuling.

Mein Python-Skript sieht wie folgt:

#!/usr/bin/python3.4 

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields 
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>") 

und meine HTML-Datei:

<form action="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> 

ich HTML laufen und zur Eingabe von Vornamen und Nachnamen schreiben, aber mein Skript startet nicht . Es zeigt nur die Fenster Wenn ich ein Skript öffnen oder speichern möchte.

EDIT:

Mein HTML:

<div class="container"> 
    <div class="row"> 
     <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 
      <p>Want to get in touch with me? Fill out the form below to send me a message and I will try to get back to you within 24 hours!</p> 
      <!-- Contact Form - Enter your email address on line 19 of the mail/contact_me.php file to make this form work. --> 
      <!-- WARNING: Some web hosts do not allow emails to be sent through forms to common mail hosts like Gmail or Yahoo. It's recommended that you use a private domain email address! --> 
      <!-- NOTE: To use the contact form, your site must be on a live web host with PHP! The form will not work locally! --> 

      <form action="/app/get.cgi" method="get"> 
       <div class="row control-group"> 
        <div class="form-group col-xs-12 floating-label-form-group controls"> 
          <label>Name</label> 
          <input type="text" name="name" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name."> 
          <p class="help-block text-danger"></p> 
        </div> 
       </div> 
       <div class="row control-group"> 
        <div class="form-group col-xs-12 floating-label-form-group controls"> 
         <label>Email Address</label> 
         <input type="email" name="email" class="form-control" placeholder="Email Address" id="email" required data-validation-required-message="Please enter your email address."> 
         <p class="help-block text-danger"></p> 
        </div> 
       </div> 
       <div class="row control-group"> 
        <div class="form-group col-xs-12 floating-label-form-group controls"> 
         <label>Message</label> 
         <textarea rows="5" name="message" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea> 
         <p class="help-block text-danger"></p> 
        </div> 
       </div> 
       <br> 
       <div id="success"></div> 
       <div class="row"> 
        <div class="form-group col-xs-12"> 
         <button type="submit" class="btn btn-default">Odoslať</button> 
        </div> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

(mein Python-Skript) get.cgi:

#!/usr/bin/python3.4 

# Import modules for CGI handling 
import cgi, cgitb 
file = open('file.txt', mode='w') 
form = cgi.FieldStorage() 

name = form.getvalue('name') 
email = form.getvalue('email') 
message = form.getvalue('message') 

file.write(name) 
file.write(email) 
file.write(message) 

file.close() 

und mein app.py die Modulhauptkolben ist

from flask import Flask, render_template, request 

app = Flask(__name__) 
app.secret_key = 'mypa$$w0rd' 

@app.route('/') 
@app.route('/index.html') 
def index(): 
    return render_template('index.html') 

@app.route('/about.html') 
def about(): 
    return render_template('about.html') 


@app.route('/contact.html') 
def contact(): 
    return render_template('contact.html') 


@app.route('/post.html') 
def sample_post(): 
    return render_template('post.html') 

if __name__ == '__main__': 
    app.run() 

Ich betreibe es als loc Alhost. Ausgang, wenn ich auf SEND klicken (in meinem html entspricht es ODOSLAT in meiner Sprache): Nicht

gefunden

Die angeforderte URL auf dem Server nicht gefunden wurde. Wenn Sie die URL manuell eingegeben haben, überprüfen Sie bitte Ihre Rechtschreibung und versuchen Sie es erneut.

Und Textfeld in Browsersuche sieht nun wie folgt aus:

http://127.0.0.1:5000/app/get.cgi?name=asdf&email=julo.marko%40gmail.com&message=asfasfasf

+1

Haben Sie Ihren Webserver eingerichtet, um Python-Skripts auszuführen? Ist Ihr Skript als ausführbar markiert? Skripte werden normalerweise mit der Erweiterung '.cgi' benannt. Hast du das versucht? –

+0

@JohnGordon schau dir meinen bearbeiteten Beitrag bitte an. –

+0

@ Reti43 schau dir meinen editierten Beitrag bitte an. –

Antwort

1

Wenn Sie eine Flasche Web-Anwendung haben, brauchen Sie keine cgi-Skripten. Zeigen Sie einfach auf die entsprechende Route in der Flasche. Mit der URL in Ihrem html:

@app.route('/api/get.cgi') 
def api_get(): 
    first_name = request.args.get('first_name') 
    last_name = request.args.get('last_name') 
    return """<html><body><h2>Hello %s %s</h2></body></html>""" % (first_name, last_name) 
+0

Ja, das ist die richtige Antwort auf mein Problem! –

+0

wahrscheinlich offtopic Frage, aber es ist in diesem Code und funktioniert nicht, warum es nicht in die file.txt geschrieben in meinem get.cgi Skript geschrieben? –

+1

'/ api/get.cgi' ist nur ein Name und hat nichts mit einer Datei namens' get.cgi' zu tun. Wenn Sie eine andere Aktion benötigen, müssen Sie sie in die Funktionen Ihrer Kolbenanwendung schreiben. – Daniel