[Bottle] Bekomme ungewollte Statusnachrichten

Django, Flask, Bottle, WSGI, CGI…
Antworten
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hi Community,

ich bin ein absoluter Neuling wenn es um Webframeworks geht.

Momentan arbeite ich an einer kleinen Seite die bottle und GAE benutzt. Leider bekomme ich wenn ich ein leeres Template ausgeben will:
Status: 200 OK
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Ich möchte aber eine leere Seite! Was mach ich falsch?

Grüße,
anogayales
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

zeig' doch mal den Code von Applikation und Template (wobei ein leeres Template gar keinen Code haben dürfte ;-) ).

Gruß, noisefloor
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Meine app.yaml:

Code: Alles auswählen

application: test
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /images
  static_dir: images
  
- url: /.views
  static_dir: .views

- url: /.*
  script: main.py
Meine main.py

Code: Alles auswählen

import bottle
from bottle import route, run

bottle.debug(False)

from bottle import route, view, template
from google.appengine.ext.webapp import util 

@route("/update")
def update():
	print template("update")


util.run_wsgi_app(bottle.default_app())
Unter dem Ordner view findet sich eine Datei update: Es wäre nett wenn mir jemand helfen könnte. Hintergrund ist das ich JSON auf meiner Seite ausgeben will und mit den Statusnachrichten der JSON Parser nicht klar kommt.

Grüße,
anogayales
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Mach aus dem 'print' mal ein 'return'.
Bottle: Micro Web Framework + Development Blog
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Bingo!

Danke! Kannst du vielleicht kurz darauf eingehen warum das passiert?

Grüße,
anogayales
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

"print" ist CGI-Style, bei WSGI soll der Browser das zurück geben, was im return-Statement steht. "print" innerhalb von WSGI-Anwendungen schreibt auf stdout - was eben _nicht_ der Browser ist. Wenn du z.B. eine WSGI-Anwendung via Apache + mod_wsgi und Standardeinstellungen (von mod_wsgi) benutzt, den erzeugt eine "print" Anweisung sogar einen Fehler.

Zu deiner main.py: Überdenk' mal die Flut deiner import-Statements... Du importierst z.B. "route" 2x explizit und 1x implizit.
"debug(false)" ist default, daher brauchst du das nicht.

Gruß, noisefloor
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Vielen Dank! Hab ich echt nicht bemerkt.
Antworten