Dynamische Webseite auf Basis von Python

Objektorientierte Skriptsprache: (python.org)
chrash
Beiträge: 10
Registriert: Mo Jun 02, 2014 9:40 pm

Dynamische Webseite auf Basis von Python

Beitrag von chrash » Mo Jun 02, 2014 9:54 pm

Hallo,

ich brauche eure Hilfe beim lösen meiner Semsteraufgabe... wir sollen eine Dynamische Webseite erstellen mit folgennden Aufgaben:
  1. -Verwenden Sie Python in der Version 3 (eigener Laptop).

    -Erstellen Sie ein HTML-Formular, mit dem Daten eingelesen und an einen Web-Server gesendet werden können. Dieser soll als Antwort eine dynamisch von einem Python-Skript erzeugte HTML-Seite zurücksenden, die im Browser angezeigt wird.

    -Aufruf des Python-Skriptes als CGI-Skript (Dabei sind mindestens zwei Parameter via http an das Python-Skript zu übergeben).

    -Das Python-Skript generiert valides HTML

    -Formatierung durch CSS
Ich habe mir gedacht ich schreibe einfach einen Sternzeichen-Rechner
Das HTML Formular habe ich schon :

Code: Alles auswählen

<html>
<head><title>Sternzeichen-Rechner</title></head>
<body>
 
  

<div style="background-image:url(background2.gif); margin:0px; padding:10px">
<h1 style="text-align:center;color:#FFFFCC">Sternzeichen-Rechner!</h1>

<div style="background-image:url(background3.jpg); margin:30px; padding:10px">
<h2 style="text-align:center;color:#804000">Sternzeichen-Rechner!</h2>

</div></div>

  <div style="text-indent:500px;"><p> Geben Sie ein Geburtsdatum ein, </p></div>
  <div style="text-indent:500px;"><p> der Rechner ermittelt dann Ihr Sternzeichen.</p></div>
 
 
  <form method="post" action="../cgi-bin/cgi_formular_auswertung.cgi" target="_blank">
<div style="text-indent:500px;">
<select name='day' id='day'>
<option value='1'> 1</option>
<option value='2'> 2</option>
<option value='3'> 3</option>
<option value='4'> 4</option>
<option value='5'> 5</option>
<option value='6'> 6</option>
<option value='7'> 7</option>
<option value='8'> 8</option>
<option value='9'> 9</option>
<option value='10'> 10</option>
<option value='11'> 11</option>
<option value='12'> 12</option>
<option value='13'> 13</option>
<option value='14'> 14</option>
<option value='15'> 15</option>
<option value='16'> 16</option>
<option value='17'> 17</option>
<option value='18'> 18</option>
<option value='19'> 19</option>
<option value='20'> 20</option>
<option value='21'> 21</option>
<option value='22'> 22</option>
<option value='23'> 23</option>
<option value='24'> 24</option>
<option value='25'> 25</option>
<option value='26'> 26</option>
<option value='27'> 27</option>
<option value='28'> 28</option>
<option value='29'> 29</option>
<option value='30'> 30</option>
<option value='31'> 31</option>
</select>
<select name='month' id='month'>
<option value='1' selected= 'selected'> Januar</option>
<option value='2'> Februar</option>
<option value='3'> M&auml;rz</option>
<option value='4'> April</option>
<option value='5'> Mai</option>
<option value='6'> Juni</option>
<option value='7'> Juli</option>
<option value='8'> August</option>
<option value='9'> September</option>
<option value='10'> Oktober</option>
<option value='11'> November</option>
<option value='12'> Dezember</option>
</select>
<select name='year' id='year'>
<option value='1901'> 1901</option>
<option value='1902'> 1902</option>
<option value='1903'> 1903</option>
<option value='1904'> 1904</option>
<option value='1905'> 1905</option>
<option value='1906'> 1906</option>
<option value='1907'> 1907</option>
<option value='1908'> 1908</option>
<option value='1909'> 1909</option>
<option value='1910'> 1910</option>
<option value='1911'> 1911</option>
<option value='1912'> 1912</option>
<option value='1913'> 1913</option>
<option value='1914'> 1914</option>
<option value='1915'> 1915</option>
<option value='1916'> 1916</option>
<option value='1917'> 1917</option>
<option value='1918'> 1918</option>
<option value='1919'> 1919</option>
<option value='1920'> 1920</option>
<option value='1921'> 1921</option>
<option value='1922'> 1922</option>
<option value='1923'> 1923</option>
<option value='1924'> 1924</option>
<option value='1925'> 1925</option>
<option value='1926'> 1926</option>
<option value='1927'> 1927</option>
<option value='1928'> 1928</option>
<option value='1929'> 1929</option>
<option value='1930'> 1930</option>
<option value='1931'> 1931</option>
<option value='1932'> 1932</option>
<option value='1933'> 1933</option>
<option value='1934'> 1934</option>
<option value='1935'> 1935</option>
<option value='1936'> 1936</option>
<option value='1937'> 1937</option>
<option value='1938'> 1938</option>
<option value='1939'> 1939</option>
<option value='1940'> 1940</option>
<option value='1941'> 1941</option>
<option value='1942'> 1942</option>
<option value='1943'> 1943</option>
<option value='1944'> 1944</option>
<option value='1945'> 1945</option>
<option value='1946'> 1946</option>
<option value='1947'> 1947</option>
<option value='1948'> 1948</option>
<option value='1949'> 1949</option>
<option value='1950'> 1950</option>
<option value='1951'> 1951</option>
<option value='1952'> 1952</option>
<option value='1953'> 1953</option>
<option value='1954'> 1954</option>
<option value='1955'> 1955</option>
<option value='1956'> 1956</option>
<option value='1957'> 1957</option>
<option value='1958'> 1958</option>
<option value='1959'> 1959</option>
<option value='1960'> 1960</option>
<option value='1961'> 1961</option>
<option value='1962'> 1962</option>
<option value='1963'> 1963</option>
<option value='1964'> 1964</option>
<option value='1965'> 1965</option>
<option value='1966'> 1966</option>
<option value='1967'> 1967</option>
<option value='1968'> 1968</option>
<option value='1969'> 1969</option>
<option value='1970'> 1970</option>
<option value='1971'> 1971</option>
<option value='1972'> 1972</option>
<option value='1973'> 1973</option>
<option value='1974'> 1974</option>
<option value='1975'> 1975</option>
<option value='1976'> 1976</option>
<option value='1977'> 1977</option>
<option value='1978'> 1978</option>
<option value='1979'> 1979</option>
<option value='1980'> 1980</option>
<option value='1981'> 1981</option>
<option value='1982'> 1982</option>
<option value='1983'> 1983</option>
<option value='1984'> 1984</option>
<option value='1985'> 1985</option>
<option value='1986'> 1986</option>
<option value='1987'> 1987</option>
<option value='1988'> 1988</option>
<option value='1989'> 1989</option>
<option value='1990'> 1990</option>
<option value='1991'> 1991</option>
<option value='1992'> 1992</option>
<option value='1993'> 1993</option>
<option value='1994'> 1994</option>
<option value='1995'> 1995</option>
<option value='1996'> 1996</option>
<option value='1997'> 1997</option>
<option value='1998'> 1998</option>
<option value='1999'> 1999</option>
<option value='2000'> 2000</option>
<option value='2001'> 2001</option>
<option value='2002'> 2002</option>
<option value='2003'> 2003</option>
<option value='2004'> 2004</option>
<option value='2005'> 2005</option>
<option value='2006'> 2006</option>
<option value='2007'> 2007</option>
<option value='2008'> 2008</option>
<option value='2009'> 2009</option>
<option value='2010'> 2010</option>
<option value='2011'> 2011</option>
<option value='2012'> 2012</option>
<option value='2013'> 2013</option>
<option value='2014'selected='selected'> 2014</option>
<option value='2015'> 2015</option>
<option value='2016'> 2016</option>
<option value='2017'> 2017</option>
<option value='2018'> 2018</option>
<option value='2019'> 2019</option>
<option value='2020'> 2020</option>
</select>
<input type="submit" value="Ermitteln" /></div>


            
  </form>
 
</body> 
</html>
Und hier das noch nicht fertige CGI Skript auf Basis von Python3.4

Code: Alles auswählen

#!/Applications/Python 3.4 
#-*- coding: utf-8 -*-

import cgi
 

print("Content-type: text/html; charset=UTF-8")
print("<html><head><title>Sternzeichen-Rechner</title></head><body>"
print("<h1>Dein Sternzeichen ist:</h1>")
print("</body> </html>")      
 
#form=cgi.FieldStorage()
#s1=form["day"].value
#s2=form["month"].value
#s3=form["year"].value
Nun zu meinen Problem, ich führe das ganze über XAMPP aus aber die html Datei kann die CGI Datei nicht ausführen findet sie aber schon. Und ja ich weiß das noch nichts zu den Sternzeichen-Rechner drin steht aber ich möchte erstmal eine einfache Ausgabe wie nur die Ausgabe : "Dein Sternzeichen ist:" haben damit ich weiß das das schon mal funktioniert. Mein Professor meinte das es wahrscheinlich schon an meiner ersten Zeile im CGI Skript liegt das ich den Dateipfad nicht richtig angegeben habe , er konnte mir da aber nicht genau helfen da er sich mit Macs nicht gut auskennt.

MFG

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von xerion21 » Di Jun 03, 2014 6:35 am

Nun zu meinen Problem, ich führe das ganze über XAMPP aus aber die html Datei kann die CGI Datei nicht ausführen findet sie aber schon. Und ja ich weiß das noch nichts zu den Sternzeichen-Rechner drin steht aber ich möchte erstmal eine einfache Ausgabe wie nur die Ausgabe : "Dein Sternzeichen ist:" haben damit ich weiß das das schon mal funktioniert. Mein Professor meinte das es wahrscheinlich schon an meiner ersten Zeile im CGI Skript liegt das ich den Dateipfad nicht richtig angegeben habe , er konnte mir da aber nicht genau helfen da er sich mit Macs nicht gut auskennt.
Leider kenne ich mich mit Macs auch nicht sonderlich aus, daher kann ich dir den genauen Pfad auch nicht nennen. Aber es wird definitiv an dieser Zeile liegen, da es bei mir (wenn ich die 1. Zeile ändere zu dem Pfad auf meinem Windows-Rechner) funktioniert.

Vielleicht heißt es bei Mac nicht Python 3.4 sondern Python?

xerion21
Beiträge: 162
Registriert: Mo Jul 08, 2013 3:37 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von xerion21 » Di Jun 03, 2014 9:02 am

werden unter MacOS nicht Pfadangaben mit einem ":" angegeben?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dynamische Webseite auf Basis von Python

Beitrag von Xin » Di Jun 03, 2014 10:09 am

chrash hat geschrieben:

Code: Alles auswählen

#!/Applications/Python 3.4 
ich möchte erstmal eine einfache Ausgabe wie nur die Ausgabe : "Dein Sternzeichen ist:" haben damit ich weiß das das schon mal funktioniert. Mein Professor meinte das es wahrscheinlich schon an meiner ersten Zeile im CGI Skript liegt das ich den Dateipfad nicht richtig angegeben habe , er konnte mir da aber nicht genau helfen da er sich mit Macs nicht gut auskennt.
Moin - ich habe gerade keinen Mac hier, aber vom ':' beim Mac als Trennsymbol habe auch mal gehört. Damals... ich habe seit 5 Jahren Macs, alle mit MacOS X und da ist ein BSD drunter - das Trennsymbol ist hier auch '/'.

Trotzdem glaube ich, dass Dein Prof recht hat.
/Applications/Python 3.4 sieht für mich nach einem Ordner aus, denn der Python-Interpreter wird kaum in in Applications liegen und "Python 3.4" heißen. Zumal ich hier gucken würde, was mit dem Leerzeichen stattfindet.

Mach eine Shell auf und gib mal "which python" ein. Den Pfad überträgst Du hinter #!
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

chrash
Beiträge: 10
Registriert: Mo Jun 02, 2014 9:40 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von chrash » Mi Jun 04, 2014 9:36 am

Mach eine Shell auf und gib mal "which python" ein. Den Pfad überträgst Du hinter #!
Habe ich gemacht es kam /usr/bin/python , das habe ich dann hinter "#!" geschrieben aber es funktioniert immer noch nicht :/

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dynamische Webseite auf Basis von Python

Beitrag von Xin » Mi Jun 04, 2014 9:46 am

chrash hat geschrieben:
Mach eine Shell auf und gib mal "which python" ein. Den Pfad überträgst Du hinter #!
Habe ich gemacht es kam /usr/bin/python , das habe ich dann hinter "#!" geschrieben aber es funktioniert immer noch nicht :/
Ist die Datei ausführbar?

Code: Alles auswählen

chmod +x <dateiname>
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

chrash
Beiträge: 10
Registriert: Mo Jun 02, 2014 9:40 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von chrash » Mi Jun 04, 2014 9:51 am

Habe ich gerade im Terminal gemacht und nochmal versucht. Das kam als Fehlermeldung :
Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
malformed header from script 'cgi_formular_auswertung.cgi': Bad header: <html><head><title>Sternzeiche

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Edit: Ich habe mein CGI Skript jetzt so umgeschrieben :

Code: Alles auswählen

#!/usr/bin/python
#-*- coding: utf-8 -*-

import cgi
 

print("Content-type: text/html; charset=UTF-8")
print("<html><head><title>Sternzeichen-Rechner</title></head><body><h1>Dein Sternzeichen ist:</h1></body></html>")

      
 
#form=cgi.FieldStorage()
#s1=form["day"].value
#s2=form["month"].value
#s3=form["year"].value
Und nun kommt diese Fehlermeldung :
Premature end of script headers: cgi_formular_auswertung.cgi

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dynamische Webseite auf Basis von Python

Beitrag von Xin » Mi Jun 04, 2014 10:02 am

chrash hat geschrieben:Habe ich gerade im Terminal gemacht und nochmal versucht. Das kam als Fehlermeldung :
Serverfehler!

Die Anfrage kann nicht beantwortet werden, da im Server ein interner Fehler aufgetreten ist.

Fehlermeldung:
malformed header from script 'cgi_formular_auswertung.cgi': Bad header: <html><head><title>Sternzeiche
Jow, damit läuft das Skript auf jeden Fall schonmal, denn das Sternzeichen kommt an.
chrash hat geschrieben:Edit: Ich habe mein CGI Skript jetzt so umgeschrieben :
Ja, das geht schon in die richtige Richtung. Ändere diese Zeile mal:

Code: Alles auswählen

...
print("Content-type: text/html; charset=UTF-8\n\n")   # <- Zwei Leerzeilen hinzugefügt
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

chrash
Beiträge: 10
Registriert: Mo Jun 02, 2014 9:40 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von chrash » Mi Jun 04, 2014 10:06 am

Es hat funktioniert super danke , jetzt kann ich den rest fertig machen danke danke :)

chrash
Beiträge: 10
Registriert: Mo Jun 02, 2014 9:40 pm

Re: Dynamische Webseite auf Basis von Python

Beitrag von chrash » Do Jun 05, 2014 10:54 pm

Ich brauche nochmal etwas Hilfe von euch :)
Da ich mich nicht gut mit Python auskenne da wir nur mit Java arbeiten , würde ich mich freuen wenn ihr mal über meinen Code gucken könnt ob das so geht :

Code: Alles auswählen

#!/usr/bin/python
#-*- coding: utf-8 -*-

import cgi
 

print("Content-type: text/html; charset=UTF-8\n\n")
print("<html><head><title>Sternzeichen-Rechner</title></head><body><h1>Dein Sternzeichen ist:</h1></body></html>")

      
 
form=cgi.FieldStorage()
s1=form["day"].value
s2=form["month"].value
s3=form["year"].value
if s1>=21 && s2=3:
    print("<html><body><p>Widder</p></body></html>")
    if s1<=20 && s2=4:
        print("<html><body><p>Widder</p></body></html>")
if s1>=21 && s2=4:
    print("<html><body><p>Stier</p></body></html>")
    if s1<=20 && s2=5:
        print("<html><body><p>Stier</p></body></html>")
if s1>=21 && s2=5:
    print("<html><body><p>Zwillinge</p></body></html>")
    if s1<=21 && s2=6:
        print("<html><body><p>Zwillinge</p></body></html>")
if s1>=22 && s2=6:
    print("<html><body><p>Krebs</p></body></html>")
    if s1<=22 && s2=7:
        print("<html><body><p>Krebs</p></body></html>")
if s1>=23 && s2=7:
    print("<html><body><p>Löwe</p></body></html>")
    if s1<=22 && s2=8:
        print("<html><body><p>Löwe</p></body></html>")
if s1>=23 && s2=8:
    print("<html><body><p>Jungfrau</p></body></html>")
    if s1<=23 && s2=9:
        print("<html><body><p>Jungfrau</p></body></html>")
if s1>=24 && s2=9:
    print("<html><body><p>Waage</p></body></html>")
    if s1<=23 && s2=10:
        print("<html><body><p>Waage</p></body></html>")
if s1>=24 && s2=10:
    print("<html><body><p>Skorpion</p></body></html>")
    if s1<=22 && s2=11:
        print("<html><body><p>Skorpion</p></body></html>")
if s1>=23 && s2=11:
    print("<html><body><p>Schütze</p></body></html>")
    if s1<=21 && s2=12:
        print("<html><body><p>Schütze</p></body></html>")
if s1>=22 && s2=12:
    print("<html><body><p>Steinbock</p></body></html>")
    if s1<=20 && s2=1:
        print("<html><body><p>Steinbock</p></body></html>")
if s1>=21 && s2=1:
    print("<html><body><p>Wassermann</p></body></html>")
    if s1<=18 && s2=2:
        print("<html><body><p>Wassermann</p></body></html>")
if s1>=19 && s2=2:
    print("<html><body><p>Fisch</p></body></html>")
    if s1<=20 && s2=3:
        print("<html><body><p>Fisch</p></body></html>")
Am Html Skript hat sich nichts geändert.

Antworten