Hilfe!!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jojo55
User
Beiträge: 2
Registriert: Donnerstag 1. März 2012, 14:25

Donnerstag 1. März 2012, 14:42

hallo

ich bin schüler und brauche ein wenig hilfe. wir sollen mit hilfe von python und html eine website erstellen.
im moment habe ich alles zusammen: das pytonprogramm, pythonmodul und das html programm.
mein problem ist aber das ich diese nich zum laufen bekomme, spich sie geben den gewünschten wert nicht aus.
auch habe ich sie schon in die richtigen ordner gelegt doch es geschiet nüscht!!! :K
Also wollte ich fragen od da jemand mal rüberschauen könnte und mir den fehler zu zeigen.

MfG Johannes
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Donnerstag 1. März 2012, 14:58

jojo55 hat geschrieben: Also wollte ich fragen od da jemand mal rüberschauen könnte und mir den fehler zu zeigen.
Ja klar, gib mir mal Deine Adresse, dann komme ich vorbei und schaue für Dich auf den Monitor und lese die Meldung ab! :twisted:

Mal im Ernst: Wieso postest Du nicht einmal die Meldung und den dazugehörigen Quellcode hier? Wie haben ja keine Glaskugel und können nicht aus dem nichts heraus sagen, was bei Dir schief läuft.

Zudem sind Deine Angaben alles andere als detailliert! Es gibt gefühlte zig Millionen Möglichkeiten mit Python ein HTML-Dokument zu erzeugen...

Also: Beschreibe mal detailliert und *präzise*, was Du tust, was Du bekommst und was Du erwartest zu bekommen. Dazu gehört Quellcode und ggf. eine exakte Fehlermeldung (copy & paste).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
jojo55
User
Beiträge: 2
Registriert: Donnerstag 1. März 2012, 14:25

Donnerstag 8. März 2012, 19:34

so mochmal detailiert:
das soll am ende alles funzen:Python-Klassen (mit Portable Python 3.2.1.1)

Code: Alles auswählen

import cgi, cgitb
cgitb.enable()

form = cgi.FieldStorage()
# Daten fuer Peugeott 106 uebernehmen
bezeichnung ="Peugeot 106"
preis = float(form.getvalue('Preis pro Tag'))
farbe = form.getvalue('Farbe')
ausstattung = form.getvalue('Ausstattung')
anzahl  = int(form.getvalue('Anzahl der Tage'))

bestellung1 = Artikel(bezeichnung, preis, farbe, ausstattung, anzahl)

# Daten fuer BMW X6 M uebernehmen
bezeichnung ="BMW X6 M"
preis = float(form.getvalue('Preis pro Tag'))
farbe = form.getvalue('Farbe')
ausstattung = form.getvalue('Ausstattung')
anzahl  = int(form.getvalue('Anzahl der Tage'))

bestellung2 = Artikel(bezeichnung, preis, farbe, ausstattung, anzahl)

# Daten fuer Porsche Boxter uebernehmen
bezeichnung ="Porsche Boxter"
preis = float(form.getvalue('Preis pro Tag'))
farbe = form.getvalue('Farbe')
ausstattung = form.getvalue('Ausstattung')
anzahl  = int(form.getvalue('Anzahl der Tage'))

bestellung3 = Artikel(bezeichnung, preis, farbe, ausstattung, anzahl)


print
print
print bestellung1
print 
print bestellung2
print
print bestellung3
print
print Artikel.zeigeGesamt()

HTML-Formular :

Code: Alles auswählen

<justify><html> <head>

</head>

<body bgcolor="darkgreen">
 <h1>Autovermietung</h1>
<form name="Bestellformular"  action="http://localhost:8080/cgi-bin/program.py" method="get">
  <h2>1. Peugeot 106</h2>
  <p>Mietpreis pro Tag: <input type="text"  name="Mietpreis pro Tag"   value="10.50" size="8" readonly> Euro.</p>
Farbe des Aoutos:
<select name="Farbe">

         <option value="blau">weiss</option>
         <option value="schwarz">schwarz</option>

</select>
<br>Ausstatung eingeben:
<select name="Ausstatung">

         <option value="standart">standart</option>
         <option value="delux">delux</option>
         <option value="premium">premium</option>

</select>

<p align="justify"><br>Bitte Anzahl der Tage eingeben:
<input type="text"  name="Anzahl der Tage"   value="0" size="3">


 <h2>2. BMW X6 M</h2>
 <p>Mietpreis pro Tag: <input type="text"  name="Mietpreis pro Tag"   value="50.00" size="8" readonly> Euro.</p>

 Farbe des Aoutos:
<select name="Farbe">

         <option value="weiss">weiss</option>
         <option value="schwarz">schwarz</option>
         <option value="rot">rot</option>

</select>

<br> Ausstatung eingeben:
<select name="Aussatttung">

         <option value="standart">standart</option>
         <option value="delux">delux</option>
         <option value="premium">premium</option>

</select>
<br> Bitte Anzahl der Tage eingeben:
<input type="text"  name="Anzahl der Tage"   value="0" size="3"><br>


 <h2>2. Porsche Boxter</h2>
 <p>Mietpreis pro Tag: <input type="text"  name="Mietpreis pro Tag"   value="50.00" size="8" readonly> Euro.</p>

 Farbe des Autos:
<select name="Farbe">

         <option value="weiss">weiss</option>
         <option value="schwarz">schwarz</option>
         <option value="gr&uuml;n">gr&uuml;n</option>

</select>

<br> Ausstatung eingeben:
<select name="Ausstattung">

         <option value="standart">standart</option>
         <option value="delux">delux</option>
         <option value="premium">premium</option>

</select>
<br> Bitte Anzahl der Tage eingeben:
<input type="text"  name="Anzahl der Tage"   value="0" size="3"><br>
  <input type="submit"  value="Abschicken">

</form>

</body>
</html></justify>

CGI-Technik
das ist das modul

Code: Alles auswählen

class Artikel(object):

    gesamtpreis = 0
    gesamtzahl = 0

    def __init__(self, bezeichnung, preis, farbe, ausstattung, anzahl):
        self.bezeichnung = bezeichnung
        self.preis = preis
        self.farbe = farbe
        self.ausstattung = ausstattung
        self.anzahl = anzahl
        self.__class__.gesamtpreis = self.__class__.gesamtpreis + anzahl*preis
        self.__class__.gesamtzahl = self.__class__.gesamtzahl + anzahl

    def __str__(self):
        """
        ausgabe = "Artikelbezeichnug:" + self.bezeichnung + "\n"
        + "Artikelpreis:" + self.preis + "\n"
        + "Artikelfarbe:" + self.farbe + "\n"
        + "Artikelausstattung:" + self.ausstattung + "\n"
        + "Artikelanzahl:" + self.anzahl

        """
        ausgabe = "   Artikel: " + self.bezeichnung + "/ " +str(self.preis)+"/ "+self.farbe+"/ "+ self.ausstattung + "/ " + str(self.anzahl)
        return ausgabe


    @classmethod
    def zeigeGesamt(cls):
        ausgabe = "Insgesamt haben Sie " + str(cls.gesamtzahl) + " Artikel bestellt. " + "Zu zahlen sind: " + str(cls.gesamtpreis) + " Euro."
        return ausgabe



if __name__ == "__main__":
    pass
und jet hab ich halt cgi und python in den ordner cgi-bin gepakt und html in html ordner
und den server gestartet es gibt aber trotzdem nich die gewünscht rechnung aus.
es soll halt die tage mal die preise für die tage zusammenrechnen. Aber wie funzt das ???
hoffe sind ausreichend details!!

MfG
Zuletzt geändert von Anonymous am Donnerstag 8. März 2012, 20:28, insgesamt 1-mal geändert.
Grund: Quelltexte in entsprechende Code-Tags gesetzt.
BlackJack

Donnerstag 8. März 2012, 20:51

@jojo55: Fang doch erst einmal mit einem ganz einfachen CGI-Skript an, das nur einen statischen Text ausgibt. Und dann erweiterst Du das Schritt für Schritt und testest zwischendurch immer wieder ob bis zu dem Punkt auch noch alles funktioniert. Es macht wenig Sinn so viel Quelltext mit so vielen Fehlern zu produzieren und dann am Ende zu hoffen, dass das funktioniert. Arbeite die Dokumentation zum CGI-Modul durch, da solltest Du zum Beispiel ziemlich am Anfang schon auf etwas stossen was bei Dir fehlt damit das eine gültige HTTP-Antwort ist, was Du da per `print()` ausgibst: http://docs.python.org/py3k/library/cgi.html

Dann solltest Du mal darüber nachdenken was die ganzen `getvalue()`-Aufrufe auf dem `form`-Objekt liefern, also was beispielsweise wiederholtes ``form.getvalue('Preis pro Tag')`` ergibt. Du erwartest da offensichtlich etwas anderes als dort tatsächlich zurück gegeben wird.

Wenn Du einen Traceback geliefert bekommst, dann solltest Du ihn uns auch verraten. Am besten 1:1 aus dem Browser kopieren. Denn wenn das erste Programm ausgeführt wird, sehe ich einen `NameError` voraus.

Das Wurzelelement von HTML ist ``<html>``. ``<justify>`` gibt es nicht einmal als HTML-Tag. Du solltest da auch dringend mal an Deiner Rechtschreibung arbeiten. Im Text ist es einfach nur unschön, aber bei Namen über die später auf Form-Werte zugegriffen wird, solltest Du Dich auf *eine* Schreibweise festlegen. Wenn möglich die, die auch im Duden zu finden ist. ;-)

Die Klassenattribute auf `Artikel` sind schlechter Stil. So ein globaler Zustand schränkt die Verwendungsmöglichkeiten unnötig ein.

Zusammensetzen von Werten und Zeichenketten mittels ``+`` und `str()` ist kein idiomatisches Python. Das sieht eher nach BASIC aus. In Python verwendet man dafür eher Zeichenkettenformatierung mittels ``%``-Operator oder der `format()`-Methode auf Zeichenketten.

Von der Programmlogik her ist es keine so gute Idee den Preis für ein Auto aus dem Browser vom Benutzer entgegen zu nehmen. Der sollte auf dem Server gespeichert werden, wo ihn der Benutzer nicht manipulieren kann.
Antworten