Seite 1 von 1

Verständlichkeits problem

Verfasst: Sonntag 25. April 2010, 12:04
von zahi
Hallo zusammen ich haben folgenden code geschreiben

Code: Alles auswählen

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

def print_header():
	print """Content-Type: text/html

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>test2</title>

</head>

<body>
 <h1>test</h1>"""

################################################################################

def print_footer():
	print "</body>\n</html>"
	
	
if __name__ == '__main__':

	print_header()
	print_footer()


und beim ausführen bekomme ich folgendes raus
hierbei handelt es sich jetzt nicht um ein Python Code
sondern das was beim ausführen im Browser auftaucht

Code: Alles auswählen

#!/usr/bin/env python #-*- coding:utf-8 -*- def print_header(): print """Content-Type: text/html
Lager
""" ################################################################################ def print_footer(): print "\n" if __name__ == '__main__': print_header() print_footer() 
ich weiss nicht woran es jetzt kliegt kann mir einer bitte aushelfen

Mfg
zahi

Verfasst: Sonntag 25. April 2010, 12:16
von Hyperion
Was bedeutet "ausführen im Browser" genau? Bitte gib dazu mal mehr Details.

Generell gilt: Es gibt Template Engines; diese machen das Vermischen von Python und HTML unnötig. (z.B. http://jinja.pocoo.org/2/documentation/)

Verfasst: Sonntag 25. April 2010, 12:43
von lunar
CGI als direkte Schnittstelle ist auch schon ein bisschen tot, moderne Webanwendungen nutzen WSGI, am besten in Verbindung mit einer abstrahierenden Bibliothek ala Werkzeug, oder gleich einem kompletten Rahmenwerk.

Verfasst: Sonntag 25. April 2010, 12:48
von zahi
also ich rufe diese seite unterverwendung eines post-serves
auf und dort kommt halt dieses ergebniss raus

Verfasst: Sonntag 25. April 2010, 12:59
von Hyperion
zahi hat geschrieben:also ich rufe diese seite unterverwendung eines post-serves
auf und dort kommt halt dieses ergebniss raus
Was ist ein post-server? Meinst Du einen HTTP-Server?

Was ist denn Ziel dieser ganzen Aktion?

Lies Dir doch mal das durch:
http://wiki.python-forum.de/Python%20un ... ntwicklung

Dann kannst Du sicherlich mehr dazu sagen oder aber erkennst ggf., dass Dein Weg suboptimal ist.

Verfasst: Sonntag 25. April 2010, 13:05
von zahi
das ist der "Server" den ich meine


BaseHTTPServer

und die Seite rufe ich halt so auf

http://localhost:8080/index.py

Verfasst: Sonntag 25. April 2010, 14:09
von Dauerbaustelle
Och je, dein Browser interpretiert die Pythondatei als HTML-Dokument und da kommt dann murks raus. Lies dir mal o.g. Link durch. :-)

Verfasst: Sonntag 25. April 2010, 15:12
von zahi
oje ich hab grad den Link mir angesehen und weiss nicht weiter wie kann man den das verhindern?
ich verwende ubuntu ich weiss nicht ob das einen einfluss darauf hat

Verfasst: Sonntag 25. April 2010, 15:16
von Dauerbaustelle
Arbeite einfach mal das Bottle-Tutorial durch, ich denke, da bekommst du einen recht guten Überblick, wie Python-Webentwicklung funktioniert.

Verfasst: Sonntag 25. April 2010, 16:23
von zahi
so das toutorial durchgemacht und eine frage offen

'Content-type','text/html' hier erwartet er ja eine html datei
wie kann ich dem sagen das es eine python datei ist ?

Verfasst: Sonntag 25. April 2010, 17:34
von Dauerbaustelle
Dem Browser? 'application/x-python' wenn ich das richtig im Kopf habe.

Edit: Nein, der Browser erwartet bei 'Content-type: text/html' keine HTML-*Datei*, sondern HTML-Inhalt. Für den Browser ist es vollkommen wurscht, ob der Inhalt, den er bekommt, aus einer Datei kommt oder von wo auch immer.

Verfasst: Sonntag 25. April 2010, 19:15
von noisefloor
Hallo,

@zohi: Wenn du einen Python-Datei serverseitig auf dem Webserver ausführen willst, dann muss es CGI (old-school) oder WSGI sein (modern).

Heißt: das muss du dem Server auch sagen, spricht in die Config eintragen, dass das so sein soll.

WAS hast du eigentlich vor? Das geht aus den Posting nicht wirklich vor. Also was du am Ende erreichen willst.

Gruß, noisefloor