Schaltfläche

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.
KC25m
User
Beiträge: 65
Registriert: Freitag 14. Juli 2006, 12:11
Wohnort: Kassel
Kontaktdaten:

Beitragvon KC25m » Dienstag 15. August 2006, 10:10

jepp stimmt schon , aber welcher ISP hat schon Python so eingerichtet das der Server es als Scriptsprache zuläst für internetseiten ?
In normal fall kannst du Jede sprache nehmen um HTML-Ausgaben zu machen , nur ohne nötige verbindung zum server is da nichts zu machen.

Bin selberbei Serverdrom und dort kann ich immer noch kein PyScripte einbinden obwohl Py auf dem server vorhanden is.
Solange dem HTTP-Server nicht zugeteilt wird was Py is macht er nichts.

Wenn ich mich irre dann mal her mit der Info , wäre gut zu wissen wie es genau geht :P

Weil habe ne Clanseite wo ich dann halt kein PHP Scripte mehr schreiben muss um die Game Server abzufragen ...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 15. August 2006, 11:10

KC25m hat geschrieben:jepp stimmt schon , aber welcher ISP hat schon Python so eingerichtet das der Server es als Scriptsprache zuläst für internetseiten

Hi KC25m!

Normalerweise kannst du das dem Apachen selber mitteilen. Außer du hat einen total abgespeckten Webspace. Dann würde ich aber den Provider wechseln.

- http://www.python-forum.de/post-36947.html#36947
- http://www.python-forum.de/post-33424.html#33424
- http://www.python-forum.de/post-33426.html#33426
- [wiki]Python Webspace[/wiki]

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Dienstag 15. August 2006, 11:42

Also ich glaube es ist Zeit euch zu sagen was ich machen will.
Ich möchte für eine in VB geschriebene Software ein Webinterface machen.
Bisher habe ich hauptsächlich in VB programmiert, Java und C# kann ich auch ein bissl.
Auf dem Rechner auf dem meine VB-Software läuft installire ich den Apache.
Auf diesem läuft dann mein PYthon script.
Bis jetzt habe ich das Interface zwischen meiner Software dem Pythonscript erstzellt.
Es steht und funktioniert. :-)
d.h. ich kann Daten lesen und schreiben.

Meine Pythonscript soll mir eine Html Oberfläche generieren.
Welche mir die Daten anzeigen soll bzw. Eingabefelder zur Verfügung stellen soll.

Meine Momentanes Hauptproblem ist:
Ich will so wie ich es aus Java,C#,VB gewöhnt bin auf einen Button drücken, und dann soll das Pythonscript den Html Code genieren.
Der Button ist ein HTML-Objekt
http://de.selfhtml.org/html/formulare/klickbuttons.htm
Ich habe bei dem Link gelesen das es am vernünftigsten wäre mittels Java script Werte zu setzen bzw. funktionen zu starten.

Ich will aber eine Funktion meines PYthon Scripts starten. Wie mach ich das über JavaScript...

Jungs ich versteh nur mehr Bahnhof :-)

Grüsse

Mutsch
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Dienstag 15. August 2006, 12:47

mutsch hat geschrieben:Ich möchte für eine in VB geschriebene Software ein Webinterface machen.
[...]
Auf dem Rechner auf dem meine VB-Software läuft installire ich den Apache. Auf diesem läuft dann mein PYthon script.
[...]
Meine Pythonscript soll mir eine Html Oberfläche generieren.
Welche mir die Daten anzeigen soll bzw. Eingabefelder zur Verfügung stellen soll.

Hi Mutsch!

Dir kann geholfen werden. :D

Das was du für den Anfang brauchst, ist CGI -- schlichtes und einfaches CGI.

CGI:
- http://www.python-forum.de/post-42514.html#42514
- http://www.python-forum.de/post-33424.html#33424
- http://www.python-forum.de/post-42497.html#42497

Und jetzt ein paar Worte zur Strategie:
Dein Webinterface ist eine Mischung aus HTML-Dateien die für statische Inhalte zuständig sind, und Python-Dateien die für dynamische Inhalte zuständig sind. Beide Dateitypen kannst du über einen Webserver wie den Apachen oder den einfachen CGI-Webserver von Jens (siehe unter den oben genannten Links) an einen Browser schicken.

Für den Anfang, ist es wohl besser, wenn du dich auf den "kleinen" Webserver von Jens konzentrierst. Das ist ein kleines Python-Programm, das an einem TCP-Port horcht und Anfragen eines Browsers beantwortet. Der Vorteil: dieses kleine Programm muss nicht so umständlich wie der Apache installiert werden und erfüllt aber trotzdem seinen Zweck.

Über ein HTML-Formular, oder über Parameter, die du an den URL anhängst, kannst du Daten an ein Python-Programm, das als CGI-Programm läuft, weitergeben.

Beispiel für ein HTML-Formular:

Code: Alles auswählen

<form action="pythondatei.py">
  Vorname: <input type="text" name="vorname" /><br />
  Nachname: <input type="text" name="nachname" /><br />
  <input type="submit" value="Hole Daten..." />
</form>


Beispiel für einen URL mit Parametern:
[code=]http://localhost:8888/cgi-bin/pythondatei.py?vorname=Gerold&nachname=Penz[/code]

Die Python-Datei wird vom Webserver aufgerufen. Die Python-Datei liefert wieder gültigen HTML-Code zurück, der vom Webserver wieder an den Browser zurück gegeben wird.

Das ist, für den Anfang, so ziemlich die einfachste Möglichkeit, Python für Web-Anwendungen zu verwenden.

Sollte später einmal eine größere Webanwendung daraus werden, dann empfehle ich dir Zope als Web-Applicationserver. Damit hast du dann alles im Griff, was man so für mittlere oder größere Webanwendungen brauchen kann. Z.B.: Benutzerauthentifizierung, Berechigungsverwaltung, Sessionverwaltung, Datenbankzugriff, TAL als Vorlagensprache um schneller und einfacher, größere Projekte zu erstellen, usw.

Aber jetzt zurück zu den oben genannten Links...

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

Beitragvon BlackJack » Dienstag 15. August 2006, 12:52

Reden wir mal vom einfachsten Fall: CGI. Im HTML-Form ist die URL zu einer Python-Datei angegeben. Wenn Du auf den Submit-Button drückst, dann werden die Daten aus dem Formular an den Webserver geschickt und der startet das Programm aus der URL -- auf dem *Server* -- und übergibt die Form-Daten gemäss der CGI Schnittstelle. In Python kommst Du da mit dem `cgi` Modul recht bequem dran.

Als Antwort kann das Skript jetzt wieder Daten zum Server schicken. Wenn Du nach dem Druck auf den Button im Browser wieder eine HTML-Seite sehen möchtest, dann muss das diese HTML-Seite sein.

Dein Skript auf dem Server müsste dann also Verbindung mit der VB Anwendung aufnehmen entsprechend der Formulardaten irgendwas machen und die Antwort zurück an den Browser schicken.

Die HTML Antwort kann man als ``print`` Anweisungen in den Python-Quelltext schreiben, aber sauberer ist es wohl eines der vielen Vorlagensysteme, wie `kid` oder `Cheetah` zu benutzen. Dann kann man die Webseiten, also die "GUI-Elemente" unabhängig vom Programm bearbeiten.

Dann gibt's noch AJAX, also die Möglichkeit per JavaScript Daten vom Server abzufragen und die Webseite im Browser entsprechend zu modifizieren. In dem Fall wird Dein Python-Programm genauso aufgerufen wie vorher, nur dass die Antwort nicht direkt im Browser dargestellt wird, sondern vom JavaScript-Programm entgegengenommen wird. Beide Ansätze lassen sich natürlich auch kombinieren.

Auf jeden Fall denke ich man sollte halbwegs Python können bevor man sich an GUI- oder Webprogrammierung macht, weil man sonst mit zwei Problemen gleichzeitig kämpft: Eine neue Sprache und die Komplexität von GUI-/Webprogrammierung.
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Dienstag 15. August 2006, 15:51

BlackJack hat geschrieben:Die HTML Antwort kann man als ``print`` Anweisungen in den Python-Quelltext schreiben, aber sauberer ist es wohl eines der vielen Vorlagensysteme, wie `kid` oder `Cheetah` zu benutzen. Dann kann man die Webseiten, also die "GUI-Elemente" unabhängig vom Programm bearbeiten.


Auf die Idee Cheetah zu verwenden bin ich selbst schon gekommen.
Leider happerts da schon bei der Installation.

Mein Betriebssytem ist WIN XP.
Habe alles so gemacht wie hier beschrieben.
http://www.devshed.com/c/a/Python/Templ ... h-Cheetah/

Windows users will likely want to take a few extra steps when installing Cheetah. The first is to rename the file cheetah since it does not come with any extension to identify it as a Python file. It's located in the Scripts directory of your Python installation. Simply rename it cheetah.py, and if you are dying to lose the extension, create a file in the same directory called cheetah.bat:

cheetah.py %*

Next, it is recommended that you obtain a file named _namemapper.pyd from SourceForge. It speeds up Cheetah on Windows:

http://prdownloads.sourceforge.net/chee ... d?download

Place the file in the Lib/site-packages/Cheetah directory of your Python installation.

Hab ich alles gemacht mein Apache mekert aber:

C:\\Python24\\lib\\site-packages\\Cheetah\\Compiler.py:1507: UserWarning: \r, referer: http://harrerhof/
[Mon Aug 14 22:02:46 2006] [error] [client 192.168.2.2] You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper.\r, referer: http://harrerhof/
[Mon Aug 14 22:02:46 2006] [error] [client 192.168.2.2] warnings.warn(\r, referer: http://harrerhof/

Was hab ich falsch gemacht?
Apache will ein kompiliertes pyc File so wie ichs verstanden habe.
In der Beschreibung ist von einem pyd File die Rede.
Das hab ich jetzt auch gefunden :-)
http://de.wikipedia.org/wiki/Liste_der_Dateiendungen/P

Grüsse

Mutsch

:idea:
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Dienstag 15. August 2006, 16:52

Hallo Gerold

Hab deinen Vorschlag zu Herzen genommen und mal versucht was du geschrieben hast.

Ich hoff ich werd nicht langsam nervig.. aber

Die Paramarameter waren im Pfad enthalten.....
http://harrerhof/cgi-bin/pythondatei.py?Number=2


Meine Pythondatei wurde aufgerufen.

Schön :lol:

Ihrgendwie muss ich ja die Parameter im Path auswerten
Für das hab ich mal ein bischen gesucht und das gefunden.
http://abop-german.berlios.de/read/sys-module.html


# das Skript beginnt hier
if len(sys.argv) < 2:
print 'Es wurden keine Parameter uebergeben.'
sys.exit()

Leider war bei mir die len(sys.argv) nur = 1
und print sys.argv hat folgendes ergeben...
C:\Programme\Apache Group\Apache2\cgi-bin\pythondatei.py
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Mittwoch 16. August 2006, 20:37

Hallo leute habt ihr meine einträge nicht gelesen. Möchte nicht ungeduldig sein. Aber könntetihr mir bezüglich meiner 2 letzten Einträge helfen??
Wäre nett.
Dankeschön.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Donnerstag 17. August 2006, 07:42

mutsch hat geschrieben:Hallo leute habt ihr meine einträge nicht gelesen. Möchte nicht ungeduldig sein.

Manchmal denke ich, dass ich mir die Arbeit vergeblich mache.

Ich suche im Forum und sonst wo im Internet nach erklärenden Seiten, stelle die gefundenen Links in meinen Beiträgen zur Verfügung und niemand liest sich die Seiten, auf die ich gezielt verweise, durch. :?

Folge den Links, die ich zu diesem Thema bereits heraus gesucht habe. Folge auch den Links, die in den Beiträgen und Seiten stehen, auf die ich verweise. Lies dir die Seiten auch durch, auf die verwiesen wird. Lies die Themen durch, auf die verwiesen wird. ZUMINDEST aber die restlichen Beiträge, ab den Beiträgen auf die ich verwiesen habe.

Noch ein Versuch:
- http://www.python-forum.de/post-36947.html#36947
- http://www.python.org/doc/current/lib/module-cgi.html
- http://www.python-forum.de/post-42497.html#42497
- http://www.python-forum.de/post-33424.html#33424

Ich habe es jetzt noch einfacher gemacht und einen direkten Link auf ein wichtiges Thema mit rein gepackt.

Die Mühe wirst du dir schon machen müssen und den Links folgen...
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Freitag 18. August 2006, 19:02

Yes Sir....

Ich werde alles durchlesen versprochen!!!!
Und dann nochmal versuchen meine Problem in griff zu kriegen.
Werd mich übrigens wieder melden wenns funktioniert.
Übrigend Gerold danke, für deine Hilfe + Gedult!!!!!

Wünsche schönes WE!!!!
mutsch
User
Beiträge: 13
Registriert: Mittwoch 9. August 2006, 19:33

Beitragvon mutsch » Sonntag 3. September 2006, 16:51

Hab mein Problemchen lösen können!!!!

Code: Alles auswählen

 

import cgi
import cgitb; cgitb.enable()
form = cgi.FieldStorage()

if form.has_key('variable'):
    variable=form['variable'].value

print "Content-Type: text/html\n"
print
print """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
       "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
       <HTML>
       <head>
       </head>
       <BODY>
       """


for value in range(0,10):
    print """
    <form method="post">
    <input type="hidden" name="variable" value=
    """
    print value
    print""">
    <input type="submit" name="submit" value=
    """
    print value
    print""">
    </form>
   """
print """
</BODY>
</HTML>
"""
 


[/quote]
BlackJack

Beitragvon BlackJack » Sonntag 3. September 2006, 18:50

Gültiges XHTML ist das aber nicht...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 3. September 2006, 20:32

BlackJack hat geschrieben:Gültiges XHTML ist das aber nicht...

Wohlgeformtes XML ist es auch nicht, und für XHTML hätte man theoretisch auch den Content-Type application/xhtml+xml verwenden können.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Sonntag 3. September 2006, 21:21

mutsch hat geschrieben:Hab mein Problemchen lösen können!!!!

Hi Mutsch!

Das freut mich. :D

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder