Verfasst: Mittwoch 27. Januar 2010, 15:56
Was ist mit locale.getpreferredencoding?Defnull hat geschrieben:Es muss eine Möglichkeit geben, die Kodierung der Template-Datei und die Kodierung der Byte String Template Variablen anzugeben.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Was ist mit locale.getpreferredencoding?Defnull hat geschrieben:Es muss eine Möglichkeit geben, die Kodierung der Template-Datei und die Kodierung der Byte String Template Variablen anzugeben.
Wenn der Rechner eine andere Kodierung hat, sollten die Dateien dort auch anders kodiert sein. Wer verschiedene Kodierungen mischt, muss immer angeben, welche er gerade verwendet. Immer utf-8 klappt nicht, weil nicht jede Bytefolge einen korrekten utf-8 text darstellt und spätestens wenn man includes hat, werden die Pfadnamen falsch dekodiert.BlackJack hat geschrieben:@tordmor: Da finde ich fest UTF-8 besser, denn mit UTF-8 kann man "alles" ausdrücken. Wenn man die lokale Kodierung benutzt, dann läuft vielleicht alles auf dem Entwickungsrechner, aber wenn man es dann auf den Webserver hochlädt, benutzt der vielleicht eine andere Kodierung.
BlackJack hat geschrieben: *Ich* möchte bestimmen welche Kodierung ich für meine Daten verwende
Und wie passen die beiden Aussagen zusammen?BlackJack hat geschrieben: Da finde ich fest UTF-8 besser,
Ganz einfach: Besser der Zwang eines Standard-Encodings (auf das man sich dann aber verlassen kann) als eine "willkürliche" Wahl des Server-OStordmor hat geschrieben:BlackJack hat geschrieben: *Ich* möchte bestimmen welche Kodierung ich für meine Daten verwendeUnd wie passen die beiden Aussagen zusammen?BlackJack hat geschrieben: Da finde ich fest UTF-8 besser,
Code: Alles auswählen
r = Router()
r.add('/foo', lambda: 'foo')
r.add('/:bar', lambda bar: bar)
handler, data = r.match('/foo')
handler(**data)
handler, data = r.match('/abc')
handler(**data)
jbs hat geschrieben:Bisher muss man noch ``data = data if data is not None else dict()`` dazuschreiben.
Code: Alles auswählen
data or {}
Code: Alles auswählen
@tree_route('/kunde/:name')
class Kunde(TreeRoute):
@view('page')
def _publish(self, out):
return dict(content=out)
def profil(self):
return self.name
`data` enthält die Daten in Form eines dict. Wenn es keinen Daten gibt, dann finde ich ein leeres dict besser als None.Dauerbaustelle hat geschrieben:jbs hat geschrieben:Bisher muss man noch ``data = data if data is not None else dict()`` dazuschreiben.Code: Alles auswählen
data or {}
Wenn du deine eigenen Änderungen behalten willst "git rebase". Aber Vorsicht, das verändert deine History, was ekelige Nebenwirkungen haben kann (doku unbedingt vorher lesen)jbs hat geschrieben:Ah, hab dir einen pull-request aufgehalst![]()
Wie kann ich denn mein Fork auf die aktuelle Version bringen?
Ja, sollte es. Ich glaub, den Bug hätte ich nie bemerktjbs hat geschrieben:Sollte es nicht @functools.wraps heißen (+@)?
Code: Alles auswählen
from bottle import run, route, request, debug
@route('/')
def main():
return """<html><body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input name="datafile" type="file" />
<input type=submit value="OK" />
</form>
</body></html>"""
@route('/upload', method='POST')
def do_upload():
df = request.POST.get('datafile')
return df.read()
debug(True)
run(host='', port=8080, reloader=True)
Code: Alles auswählen
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/bottle-0.6.4-py2.6.egg/bottle.py", line 309, in __call__
output = handler(**args)
File "/src/test1.py", line 16, in do_upload
return df.read()
File "/usr/lib/python2.6/cgi.py", line 522, in __getattr__
raise AttributeError, name
AttributeError: read
Code: Alles auswählen
@route('/upload', method='POST')
def do_upload():
df = request.POST.get('datafile')
return df.value
Code: Alles auswählen
@route('/upload', method='POST')
def do_upload():
df = request.POST.get('datafile')
open('uploads/111.txt','wb').write( df.file.read() )
redirect('/',302)
Ich würds ja mirrorn, aber der Host ist nicht verfügbarzoxzox3 hat geschrieben:wiki by bottle in 23 minuten
http://lega.selfip.com/page/23 (video 33Mb, Host ist nicht verfügbar, in der Nacht)
Code: Alles auswählen
Index: bottle.py
===================================================================
--- bottle.py (revision )
+++ bottle.py (working copy)
@@ -755,10 +755,12 @@
raise HTTPError(code, text)
-def redirect(url, code=303):
+def redirect(url, code=303, absoluteurl=True):
""" Aborts execution and causes a 303 redirect """
- scriptname = request.environ.get('SCRIPT_NAME', '').rstrip('/') + '/'
- location = urljoin(request.url, urljoin(scriptname, url))
+ if absoluteurl:
+ scriptname = request.environ.get('SCRIPT_NAME', '').rstrip('/') + '/'
+ location = urljoin(request.url, urljoin(scriptname, url))
+ else: location = url
raise HTTPResponse("", status=code, header=dict(Location=location))