Seite 7 von 30
Verfasst: Freitag 21. August 2009, 12:05
von Defnull
1) Stimmt, aber frueher oder spaeter kommen noch Optionen dazu, wie z.B. default URL Parameter oder validator Einstellungen.
2) Ist fuer Schreibfaule oder Leute, die das von anderen Frameworks gewoehnt sind. Ist Geschmackssache, hat aber nur wenige Zeilen gekostet
Ganz nebenbei hab ich heraus gefunden, wie man Singletons in Python baut

.__new__() ist toll

Verfasst: Freitag 21. August 2009, 12:17
von cofi
Defnull hat geschrieben:Ganz nebenbei hab ich heraus gefunden, wie man Singletons in Python baut

.__new__() ist toll

Daneben gibts das Borg-Pattern und Module sind natuerliche Singletons

Mitsushiko hat da auch einen netten Post darueber geschrieben:
http://lucumr.pocoo.org/2009/7/24/singl ... -in-python
php kompitabel
Verfasst: Samstag 29. August 2009, 12:29
von microkernel
Hallo,
ich hoffe ich pamiere mich jetzt nicht völlig (bin ein totaler anfänger in sachen html,php,css und webserver):
ich hatte vor ungefähr 5 minuten "Bottle" für mich entdeckt. Jetzt wollte ich mithilfe folgendes script eine php-page zum laufen bringen:
Code: Alles auswählen
from bottle import run, route
@route('/')
def index():
phpCode = open("index.html", "r")
return phpCode.read()
run(host='localhost', port=80)
Kann man überhaupt nur mithilfe von Bottle php seiten anzeigen lassen?
Verfasst: Samstag 29. August 2009, 12:48
von Dauerbaustelle
Nein, du kannst mit einem Python-Webframework keinen PHP-Code parsen (ohne externe Werkzeuge) - aber warum willst du das überhaupt? ;-)
Verfasst: Samstag 29. August 2009, 14:33
von Defnull
Witzige Idee eigentlich: Mann könnte die php-cgi executable mit subprocess öffnen, sie mit den env-variablen aus wsgis environ füttern (die ja weitgehend CGI kompatibel sind) und den output an den Browser zurück werfen. Käme auf einen Versuch an
Alternativ könnte man auch eines der vielen fastcgi/wsgi Gateways schnappen und in ein wsgi/fastcgi Gateway umschreiben

Verfasst: Samstag 29. August 2009, 15:56
von nemomuk
man könnte natürlich auch versuchen, mit Python PHP Code auszuführen, der wiederum den eigentlich gewünschten Python-Code ausführt. Die Frage ist nur, was soll das bringen und wofür der Aufwand?
Verfasst: Samstag 29. August 2009, 16:01
von microkernel
es ist halt nur so das ich oft am design und am html gerüst arbeite und den html code dann immer und die php datei importiere und den content einfüge.
Sieht dann ungefähr so aus:
Code: Alles auswählen
$content = "Inhalt der Website";
$template = implode("", file("static/style.html"));
$template = str_replace("<!inhalt!>", $content, $template);
echo ($template);
?>
Somit ist es viel leichter den überblick zu behalten (für mich zumindest)
Verfasst: Samstag 29. August 2009, 16:06
von lunar
Und wofür genau benötigt man da jetzt PHP?
Verfasst: Samstag 29. August 2009, 16:18
von nemomuk
Das frage ich mich auch, tausche einfach den <!inhalt!>-Tag durch einen entsprechenden anderen Tag deiner Templatesprache aus und lass das rendern.
Würde dann mit einer Templatesprache irgendwie so aussehen (welche du verwendest bleibt deinen Anforderungen und Wünschen überlassen):
Code: Alles auswählen
@route('dein_view')
def function():
... get content
return render('templates/style.html', content=content)
Verfasst: Samstag 29. August 2009, 16:22
von microkernel
Ich kenne mich doch noch nicht mit Bottle aus.
Ich wusste nicht das es soeine funktion gibt.
Verfasst: Samstag 29. August 2009, 16:27
von nemomuk
Das ist auch keine spezielle Funktion von bottle, obwohl ich glaube, dass bottle sogar eine eigene Templatesprache mitbringt.
Wie gesagt, du kannst jede beliebige Templatesprache verwenden (Mako, Jinja, Cheetah,...).
Dokumentationen und Tutorials lesen, kann Wunder wirken (kennst du die Funktionen dir und help?).
Verfasst: Samstag 29. August 2009, 16:29
von microkernel
SchneiderWeisse hat geschrieben:Das frage ich mich auch, tausche einfach den <!inhalt!>-Tag durch einen entsprechenden anderen Tag deiner Templatesprache aus und lass das rendern.
Würde dann mit einer Templatesprache irgendwie so aussehen (welche du verwendest bleibt deinen Anforderungen und Wünschen überlassen):
Code: Alles auswählen
@route('dein_view')
def function():
... get content
return render('templates/style.html', content=content)
Kann mir jemand mal das jemand genauer erklären. Ich versteh diesen Code teil nicht so ganz.
Verfasst: Samstag 29. August 2009, 16:38
von microkernel
ahh... sorry habs schon verstanden. Danke
Verfasst: Samstag 29. August 2009, 20:08
von Defnull
SchneiderWeisse hat geschrieben:obwohl ich glaube, dass bottle sogar eine eigene Templatesprache mitbringt.
Jap, tut es. Und die ist auch
dokumentiert
Verfasst: Sonntag 30. August 2009, 09:32
von sma
Selbst wenn Bottle keine `template()`-Funktion hätte, für die Anforderung, etwas wie `<!inhalt!>` in einem String durch den Inhalt einer anderen Datei zu ersetzen, ist nun wirklich nicht mehr als ein Zweizeiler:
Code: Alles auswählen
content = "Webseite ... <!inhalt!> ..."
with open("static/whatever") as f:
return content.replace("<!inhalt!>", f.read())
Stefan
Verfasst: Dienstag 1. September 2009, 13:35
von microkernel
hallo,
ich spiele jetzt schon seit ein paar tagen mit diesen "micro" web framework, aber immer bleibe ich bei den folgenden problem hängen:
Wenn ich in meiner CSS-Datei bilder auf "static/images/bg.png" (oder ect.) verlinke und dann noch folgenden code in meine python datei hinzufüge funktioniert das ganze trotzdem nicht.
Code: Alles auswählen
@route('/static/:filename#.*#')
def send_staticFiles(filename):
send_file(filename, root=self.static_directory)
@route('/static/images/:filename#.*#')
def send_images(filename):
send_file(filename, root=self.image_directory)
Was mache ich flach?
Verfasst: Dienstag 1. September 2009, 13:38
von DasIch
Wo kommt das `self` her?
Verfasst: Dienstag 1. September 2009, 13:54
von microkernel
ich hab das ganze gerade aus einer klasse rauskopiert.
Verfasst: Dienstag 1. September 2009, 17:48
von Defnull
Was sagen denn die logs? 404? 401? Oder sogar ne Exception? "funktioniert nicht" ist eine sehr ungenaue Fehlerbeschreibung.
Mal ein paar Vermutungen:
1) self.static_directory ist leer
2) self.static_directory ist falsch
3) self.static_directory ist ein relativer Pfad und du benutzt mod_wsgi
Im letzten Fall hilft es, einen absoluten Pfad anzugeben.
Verfasst: Mittwoch 2. September 2009, 15:43
von microkernel
also in der konsole steht nur:
Code: Alles auswählen
localhost - - [02/Sep/2009 16:44:06] "GET /static/images/bg.jpg HTTP/1.1" 200 54 14
und der pfad ist auch in ordnung.