Seite 1 von 1

web.py

Verfasst: Freitag 12. Oktober 2007, 23:58
von Mister Wing
Hallo,

ich habe mal das Tutorial von http://webpy.org/tutorial2.de
gemacht. Denke auch alles richtig gemacht zu haben.

PythonCode

Code: Alles auswählen

import web
import MySQLdb

render = web.template.render('templates/')

urls = (
        '/', 'index')

class index:
    def GET(self):
        todos = web.select('todo')
        print render.homepage(todos)
        render.cache = False

web.webapi.internalerror = web.debugerror

if __name__ == "__main__":
    web.config.db_parameters = dict(dbn='mysql', user='root', pw='root', db='_python')
    web.run(urls, globals(), web.reloader)
Meine homepage.html

Code: Alles auswählen

$def with (todos)
<ul>
	$for todo in todos:
		<li id="t$todo.id">$todo.title</li>
</ul>
Bekomme aber eine Fehlermeldung.

Code: Alles auswählen


exceptions.NameError at /
could not find 'def' (line 1)
Python 	C:\Programme\_Python24\Lib\site-packages\web\template.py in h_var, line 674
Web 	GET http://localhost:10000/
Traceback (innermost first)
...
Muss ich noch bestimmte Einstellungen machen?
Hab auch mysql_python und mod_python installiert.

Vielen Dank schon mal.

Verfasst: Samstag 13. Oktober 2007, 01:00
von Y0Gi
Hm, ich sehe das Problem so nicht. Hast du die aktuelle Version? Möglicherweise benutzt er doch Cheetah für die Templates? Oder muss man irgendwie das Templating aktivieren?

Verfasst: Sonntag 14. Oktober 2007, 19:23
von jordi
Versuch's mal mit

Code: Alles auswählen

$def with (todos)
<ul>
$for todo in todos:
    <li id="t$todo.id">$todo.title</li>
</ul>
Das Templating-System ist was das einrücken angeht ziemlich lästig, soll sich aber in webpy 0.3 ändern.

Und vergewissere dich ob du auch wirklich webpy 0.2 installiert hast, ansonsten wird noch Cheetah, welches etwas anders funktioniert, verwendet.

Verfasst: Montag 15. Oktober 2007, 07:52
von Mister Wing
Also ich habe web.py 0.22 installiert.
Und meine PythonVersion ist ActivePython-2.4.3.12.
Und mit dem einrücken hab ich auch drauf geachtet (4 Leerzeichen).

Wie kann ich denn dieses Templating aktivieren?
Ich meine der erste Teil des Tutorials hat ja funktioniert. Ich kann ja Hello World schreiben. Kann es vielleicht auch mit der Datenbank zu tun haben?
Die ist ja standardmässig auf Port 3306. Habe da im übrigen xampp zu laufen.

Verfasst: Montag 15. Oktober 2007, 18:21
von Mister Wing
mmmhhhh...

Wie kann ich denn die Daten aus einem HTML-Formular in Python auslesen?
Gibt es ein Beispiel?

Hab es zwar mit web.input() probiert, aber wie kann ich darauf zu greifen in Python?

Verfasst: Montag 15. Oktober 2007, 20:19
von jordi
In der `code.py`:

Code: Alles auswählen

def POST(self):
    i = web.input()
    n = web.insert('blog_entries', title=i.title, text=i.text, authorid=session['userid'], date=time.time())
Das Template:

Code: Alles auswählen

	<form action="/add" method="post" enctype="multipart/form-data">
		title : <input " type="text" name="title" /> <br />
		text : <br />
		<textarea name="text"></textarea>
		<br /> <br />
		<input type="submit" value="add" />
	</form>
Es empfiehlt sich auch die Beispiele hier anzusehen. (Wobei da einige noch älter sind un mit Cheetah arbeiten)

Verfasst: Dienstag 16. Oktober 2007, 07:56
von jens
@Mister Wing: Ich weiß es ist nicht ganz angebracht und hilft dir erstmal nicht weiter. Aber du solltest dir vielleicht mal andere Sachen ansehen, wie z.B. django. Überfliege mal das Tutorial und urteile selbst: http://www.djangoproject.com/documentation/ :lol:

Verfasst: Dienstag 16. Oktober 2007, 13:13
von Leonidas
Wenn man ``web.py`` mag, dann bevorzugt man eher kleine Frameworks. Ich habe in den letzten Tagen Werkzeug verwendet und muss sagen, dass es eigentlich ganz cool ist. Vor allem wenn man von Django kommt, kann man sich schnell viele Funktionen wrappen um eine Django-ähnliche Umgebung zu haben und damit schön schnell programmieren zu können.

Verfasst: Dienstag 16. Oktober 2007, 21:28
von poker
Ich weiß nicht aber möchte man sich wirklich noch ``web.py`` antun? IMO grauenhafter Quellcode und naja...

BTW: Wekzeug. Grad mal überflogen (kannte ich bisher noch nicht). Hmm, vom Ansatz her nicht schlecht...Werde aber auch hier nicht recht warm mit (Müsste ich mich mal bei Gelegenheit ausgiebig mit beschäftigen). Der Quellcode ist **aber** 1A ;)

Verfasst: Dienstag 16. Oktober 2007, 22:24
von Leonidas
poker hat geschrieben:BTW: Wekzeug. Grad mal überflogen (kannte ich bisher noch nicht). Hmm, vom Ansatz her nicht schlecht...Werde aber auch hier nicht recht warm mit (Müsste ich mich mal bei Gelegenheit ausgiebig mit beschäftigen). Der Quellcode ist **aber** 1A ;)
Nachdem ich ein Wrapper-Modul geschrieben habe, dass die lästigen Sachen bei Werkzeug macht (also etwa BaseRequest und BaseResponse subclassen) ist es eigentlich bisher ganz cool.

Verfasst: Mittwoch 17. Oktober 2007, 07:09
von jens
Die Frage ist immer, wie viel Zeit und Aufwand möchte man betreiben. Möchte man möglichst wenig machen und sich nur auf die eigentliche Aufgabe konzentrieren, nimmt man besser django und nutzt die vielen Dinge die es bietet. Oder hat man viel Zeit und möchte möglichst alles selber tun, dann nimmt man so Dinge wie Werkzeug... Die Hardcore Methode, alles selber machen, lohnt sich aber nicht wirklich.

Verfasst: Mittwoch 17. Oktober 2007, 10:14
von Y0Gi
poker hat geschrieben:Ich weiß nicht aber möchte man sich wirklich noch ``web.py`` antun? IMO grauenhafter Quellcode und naja...
Sehe ich ähnlich. Es mag ja funktionieren und "reichen", aber es gab schon Schelte von bekannteren Leuten für den hingefrickelten Code.
Leonidas hat geschrieben:Nachdem ich ein Wrapper-Modul geschrieben habe, dass die lästigen Sachen bei Werkzeug macht (also etwa BaseRequest und BaseResponse subclassen) ist es eigentlich bisher ganz cool.
Ja, dass man erst Subklassen *muss* gefällt mir auch nicht.
blackbird: füge doch einfach fertige Subklassen für UTF-8 (und ggf. Latin-1) mit ein.

Allerdings ist die UTF-8-Fähigkeit nachwievor ein Killerkriterium. Mit Paste hab ich da immer mal wieder Probleme außerhalb der eigentlichen WSGI-Anwendung :/

Verfasst: Mittwoch 17. Oktober 2007, 10:25
von Mister Wing
mmmhhhh...

Werde mir das Tutorial mal anschauen.
Ich möchte eigentlich nur ein HTML-Formular auswerten in Python. Da wäre mit Django wohl nach Spatzen geschossen.
Benutze jetzt erst mal CGI, wird wahrscheinlich auch fürs erste reichen.

Trotzdem danke!

Verfasst: Mittwoch 17. Oktober 2007, 13:05
von jordi
Die Frage ist immer, wie viel Zeit und Aufwand möchte man betreiben. Möchte man möglichst wenig machen und sich nur auf die eigentliche Aufgabe konzentrieren, nimmt man besser django und nutzt die vielen Dinge die es bietet.
Je nachdem wie die eigentliche Aufgabe aussieht, kann es durchaus vorkommen, dass Django mehr ein Hindernis darstellt als eine Hilfe.

"Alles" selber machen muss man ja auch nicht, dazu gibt es dann ja web.py oder Werkzeug...

Verfasst: Mittwoch 17. Oktober 2007, 13:25
von Leonidas
Y0Gi hat geschrieben:Ja, dass man erst Subklassen *muss* gefällt mir auch nicht.
blackbird: füge doch einfach fertige Subklassen für UTF-8 (und ggf. Latin-1) mit ein.
Das habe ich auch gemeint. Aber Paste #6447 ist jetzt auch nur etwas länger als 50 Zeilen und bindet sogar Jinja ein. Also dass muss man etwas relativieren.

Und dadurch dass es so nahm am WSGI-Kern ist, habe ich gestern auch problemlos die Session Middleware von ``flup`` und danach die von Beaver einbinden können.

Der Einstieg ist sicherlich einfacher, als der in Pylons.

Verfasst: Donnerstag 18. Oktober 2007, 07:09
von mitsuhiko
Leonidas hat geschrieben:
Y0Gi hat geschrieben:Ja, dass man erst Subklassen *muss* gefällt mir auch nicht.
blackbird: füge doch einfach fertige Subklassen für UTF-8 (und ggf. Latin-1) mit ein.
Das habe ich auch gemeint. Aber Paste #6447 ist jetzt auch nur etwas länger als 50 Zeilen und bindet sogar Jinja ein. Also dass muss man etwas relativieren.
http://paste.pocoo.org/show/6502/ <- den context is None test braucht man nicht und globals sind ein dict, da kannst du update() verwenden.


//EDIT: Ihr habt mich überredet, utf-8 wird default

Verfasst: Donnerstag 18. Oktober 2007, 07:35
von Leonidas
Gut, dass dass ein Dict ist, hätte mir auffallen können :oops:

Wegen dem UTF-8: Ich finde, dass das durchaus konsequent ist, Jinja verwendet so weit ich weiß auch UTF-8 als Default.