Seite 1 von 1

Brauche dringend Hilfe Python in HTML einbinden

Verfasst: Mittwoch 21. Juni 2006, 10:19
von gentleman1408
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*

Verfasst: Mittwoch 21. Juni 2006, 10:25
von gerold
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
:-)

Verfasst: Mittwoch 21. Juni 2006, 10:26
von Rebecca
VOR dem Posten lesen. Insbesondere die Punkte b.6, c.3, c.4.

Verfasst: Mittwoch 21. Juni 2006, 11:01
von gentleman1408
Tut mir leid brauche die Hilfe nur schnell, deshalb hab ich so schnell getippt und naja kann mir trotzdem jemand helfen? :(

Verfasst: Mittwoch 21. Juni 2006, 15:19
von Leonidas
[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.

Anleitung: CGI-Skript mit dem CGI-Server von Jens

Verfasst: Mittwoch 21. Juni 2006, 17:46
von gerold
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
:-)

Verfasst: Mittwoch 21. Juni 2006, 18:50
von gerold
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
:-)

Verfasst: Donnerstag 22. Juni 2006, 06:12
von gentleman1408
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?

Verfasst: Donnerstag 22. Juni 2006, 08:02
von gerold
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
:-)

Verfasst: Donnerstag 22. Juni 2006, 12:10
von gentleman1408
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?????

Verfasst: Donnerstag 22. Juni 2006, 13:11
von gerold
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
:-)

Verfasst: Donnerstag 22. Juni 2006, 13:17
von gerold
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
:-)

Verfasst: Samstag 24. Juni 2006, 12:25
von 7crystal7
zope und die zope templating engine(tal) kann ich nur empfehlen!

lg
babsi