Brauche dringend Hilfe Python in HTML einbinden

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
gentleman1408
User
Beiträge: 4
Registriert: Mittwoch 21. Juni 2006, 10:11

Hallöle :)
Also -ich habe nen apachen server
-kleine python programme z.b.

Code: Alles auswählen

korpergrose = input ("Bitte geben Sie nun Ihre Groesse in cm ein:\n")
realgewicht = input ("Bitte geben Sie ihr Gewicht in Kg ein:\n") 
schritt = korpergrose/100.0
schritt2 = schritt * schritt
bmi = realgewicht / schritt2
print "--------------------------------------------------------------------------"
print "Ihr BMI betraegt:\n",bmi,"\n" 
print "Der Normal-BMI liegt bei Frauen zwischen  19  und 24, bei Maennern  zwischen 20 und 25. Bei Maennern und Frauen ab 65 Jahren gilt ein BMI zwischen 24 und 29 als Normal!"
print "--------------------------------------------------------------------------"
input("Bitte druecken sie eine taste um das Programm zu beenden") 
nun will ich dieses kleine programm in meine html datei oder irgendwie anders verbinden damit ich sie online habe ich weiß irgendwo gibt es hier dazu schonfragen im forum da ich aber erst seit gestern programmiere würde ich es bitte ein bischen einfacher erklärt haben

Edit (Leonidas): Subject.lower(), Code in Python-Tags gesetzt. *Sigh*
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi gentleman1408!

Die Überschrift in Großbuchstaben. Der Text in Rot. Warum schreist du so durch die Gegend?

Bitte halte dich beim nächsten Mal ein wenig zurück, dann hilft man dir gerne weiter.

Es wäre auch nicht schlecht, wenn du deinen Quellcode in Code-Tags einschließen würdest. Siehe: http://www.python-forum.de/faq.php#21

mfg
Gerold
:-)
Zuletzt geändert von gerold am Mittwoch 21. Juni 2006, 10:26, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

VOR dem Posten lesen. Insbesondere die Punkte b.6, c.3, c.4.
gentleman1408
User
Beiträge: 4
Registriert: Mittwoch 21. Juni 2006, 10:11

Tut mir leid brauche die Hilfe nur schnell, deshalb hab ich so schnell getippt und naja kann mir trotzdem jemand helfen? :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

[wiki]Python im Web[/wiki] und insbesondere [wiki]CGI[/wiki] (oder Django wenn es serious sein soll).
Andererseits ist es wenig empfehlenswert Programmieren mit Websachen anzufangen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi gentleman1408!

Es gibt viele, viele Möglichkeiten, mit Python Web-Anwendungen zu programmieren.

An unterster Ebene befindet sich CGI, was allerdings für so einfache Anwendungen wie deinem BMI mehr als ausreicht.

An oberster Ebene sind die Web-Frameworks und Web-Application-Server wie Django, Zope und Co. Für den Anfang, um ein Gefühl für die Web-Programmierung zu bekommen, zu komplex.

Fang am Besten mit einem einfachen Python-CGI-Server an. Hier ist ein Link zu einem kleinen CGI-Webserver, den Jens aufbereitet hat.

http://www.python-forum.de/post-23648.html#23648

Speichere diesen Webserver in einen eigenen Ordner unter dem Namen "webserver.py" ab, entferne die Zeilen 93 und 94, die bringen nur Probleme und ändere den Port auf 8888. Das ist in der Zeile 101 zu tun.

Code: Alles auswählen

ListenPort  = 8888,
Wenn du unter Windows einen Doppelklick auf die Datei "webserver.py" machst, dann sollte der Server laufen. Sieht man, wenn das Konsolenfenster offen bleibt und dir anzeigt, unter welcher URL der Server zu erreichen ist.

Erstelle jetzt noch unterhalb des Ordners, in dem der Server liegt, einen Ordner mit dem Namen "cgi-bin". In diesen Ordner kannst du dann deine CGI-Skripte legen. Je nachdem, welche Python-Version du einsetzt, funktioniert es auch ohne diesen CGI-BIN-Ordner, aber sicher ist sicher.

Mit dieser CGI-Datei kannst du schon mal testen, ob alles funktioniert. Als Ergebnis solltest du eine Liste von Umgebungsvariablen usw. zurück bekommen.

cgi_info.py:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

print "Content-Type: text/html;charset=iso-8859-1"
print

import cgi
import cgitb; cgitb.enable()

print \
"""<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
  <title>CGI-Informationen</title>
</head>
<body>
"""

cgi.print_arguments()
cgi.print_directory()
cgi.print_environ()
cgi.print_environ_usage()

import os
print os.environ.get("HTTP_HOST")

print \
"""
</body>
</html>
"""
Das ist der Anfang. Wenn das funktionert, geht es weiter.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi !

So könnte das fertige CGI-Programm aussehen:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
******************************************************************************
* CGI-Programm -- Zeigt ein Formular zum Berechnen des BMI an.
*
* Created:      2006-06-21 by Gerold
* Requirements: Python: http://www.python.org
*
* Vorlage war:
*
* korpergrose = input ("Bitte geben Sie nun Ihre Groesse in cm ein:\n")
* realgewicht = input ("Bitte geben Sie ihr Gewicht in Kg ein:\n")
* schritt = korpergrose/100.0
* schritt2 = schritt * schritt
* bmi = realgewicht / schritt2
* print "--------------------------------------------------------------------------"
* print "Ihr BMI betraegt:\n",bmi,"\n"
* print "Der Normal-BMI liegt bei Frauen zwischen  19  und 24, bei Maennern  zwischen 20 und 25. Bei Maennern und Frauen ab 65 Jahren gilt ein BMI zwischen 24 und 29 als Normal!"
* print "--------------------------------------------------------------------------"
* input("Bitte druecken sie eine taste um das Programm zu beenden")
*
******************************************************************************
"""

print "Content-Type: text/html;charset=iso-8859-1"
print

import cgi
import cgitb; cgitb.enable()


# Kopf
print \
"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
  <title>Body Mass Index</title>
</head>
<body>
"""

# Überschrift
print \
"""
  <!-- Überschrift BEGIN -->
  <div align="center">
    <h1>Body Mass Index</h1>
  </div>
  <!-- Überschrift END -->
"""

# Daten holen
fs = cgi.FieldStorage()
size_cm = fs.getvalue("size_cm", "")
weight_kg = fs.getvalue("weight_kg", "")

try:
    # Prüfen ob Zahlen übergeben wurden
    float(size_cm)
    float(weight_kg)
    berechnung_moeglich = True
except:
    berechnung_moeglich = False

if berechnung_moeglich:
    # BMI berechnen
    schritt = float(size_cm)/100.0
    schritt2 = schritt * schritt
    bmi = float(weight_kg) / schritt2

    # Ergebnis anzeigen
    print \
"""
  <!-- BMI-Anzeige BEGIN -->
  <div align="center">
    <p>
      Ihr BMI betraegt: <strong>%(bmi).2f</strong>
    </p>
    <p>
      Der Normal-BMI liegt bei Frauen zwischen 19 und 24, 
      bei Maennern zwischen 20 und 25. <br />
      Bei Maennern und Frauen ab 65 Jahren gilt ein BMI 
      zwischen 24 und 29 als Normal!
    </p>
  </div>
  <!-- BMI-Anzeige END -->
""" % {"bmi": bmi}

# Formular anzeigen
print \
"""
  <!-- Eingabeformular BEGIN -->
  <form action="bmi.py">
    <table border="1" cellpadding="3" cellspacing="0" align="center">

      <!-- Feld für Größe BEGIN -->
      <tr>
        <td>
          Geben Sie nun Ihre Größe in cm ein:
        </td>
        <td>
          <input type="text" name="size_cm" value="%(size_cm)s" />
        </td>
      </tr>
      <!-- Feld für Größe END -->

      <!-- Feld für Gewicht BEGIN -->
      <tr>
        <td>
          Geben Sie ihr Gewicht in Kg ein:
        </td>
        <td>
          <input type="text" name="weight_kg" value="%(weight_kg)s" />
        </td>
      </tr>
      <!-- Feld für Gewicht END -->
      
      <!-- Submit-Button BEGIN -->
      <tr>
        <td colspan="2" align="center">
          <input type="submit" value="Berechnen" />
        </td>
      </tr>
      <!-- Submit-Button END -->
      
    </table>
    
  </form>
  <!-- Eingabeformular END -->
""" % {
    "size_cm": size_cm, 
    "weight_kg": weight_kg
}

# Fuss
print \
"""
</body>
</html>
"""
Alles was du über HTML wissen musst, lernst du hier: http://de.selfhtml.org/

Was du über CGI mit Python wissen musst: http://docs.python.org/lib/module-cgi.html

Und hier noch ein gut gemeinter Hinweis von mir: Wenn du vor hast, größere Web-Projekte zu programmieren, dann vergiss CGI. CGI ist super für so kleine Sachen wie das hier, aber es ist ungeeignet für Größeres.

Für kleine, mittlere und größere Projekte empfehle ich Zope. Siehe hier: http://gerold.bcom.at/zope_plone/zope_a ... en_windows

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
gentleman1408
User
Beiträge: 4
Registriert: Mittwoch 21. Juni 2006, 10:11

Also erst mal danke an euch das Ihr mir helft aber da habe ich noch eine Frage : Ich verstehe das nicht ganz mit dem Server, also ich soll den von Jens nehmen oder wie? kann ich meinen eigenen nicht auch dazu benutzen?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gentleman1408 hat geschrieben:ich soll den von Jens nehmen oder wie? kann ich meinen eigenen nicht auch dazu benutzen?
Hi gentleman1408!

Ich schrieb:
Fang am Besten mit einem einfachen Python-CGI-Server an
Warum? Ganze einfach! Es ist komplizierter, CGI-Skripte mit dem Apachen zum Laufen zu bekommen. Außerdem versteht man dann besser, dass "mod_python" absolut **NICHTS** mit CGI zu tun hat.

Der kleine von Jens ist ideal um mal schnell ein CGI-Programm zu erstellen und zu probieren. Wenn damit alles läuft, dann steht nichts mehr dagegen, das CGI-Skript mit dem Apachen laufen zu lassen. Dann kann man sich um solche Probleme wie falsche Zeilenumbrüche und Ändern der Apache-Konfiguration kümmern.

Immer Schritt für Schritt. Du hast ja selbst geschrieben, dass du erst seit Kurzem mit Python programmierst. Du musst ja nicht die ganze Welt in ein paar Tagen entdecken. :wink:

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
gentleman1408
User
Beiträge: 4
Registriert: Mittwoch 21. Juni 2006, 10:11

HI
JJUUUUUHHUUUUUU :D es hatgeklappt mein Fehler war das mein apache Server im Hintergrund lief und die beiden sich nicht so verstanden haben :twisted: so nun vielleichtentlich die letzte frage wie bekomme ich das nun online?????
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gentleman1408 hat geschrieben:die beiden sich nicht so verstanden haben
Hi!

Hast wohl meinen Hinweis mit dem Port

Code: Alles auswählen

ListenPort  = 8888,
nicht umgesetzt. :twisted:

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gentleman1408 hat geschrieben:wie bekomme ich das nun online
Hi!

http://www.python-forum.de/post-33426.html#33426
[wiki]Web-Skripte zum laufen bringen[/wiki]
http://httpd.apache.org/docs/2.2/howto/cgi.html

Suche hier im Forum nach CGI.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

zope und die zope templating engine(tal) kann ich nur empfehlen!

lg
babsi
Antworten