Hallo,
gibt es ein Komponenten-Framework wie Apache Wicket für Python? Also ein Framework wo z. B. ein Eingabefeld oder ein Formular Objekte im Sinne der objektorientierten Programmierung sind?
Gibt es ein Python-Komponenten-Framwork?
Leonidas, dem würde ich gar nicht zustimmen. Wicket funktioniert grundsätzlich anders als Django mit newforms und wahrscheinlich auch WTForms (was in dem Crashkurs-Dokument genauso aussieht). zine.forms kenne ich nicht. Nagare (abgeguckt von Seaside) geht schon eher in diese Richtung.
Etwas wie Wicket wäre in der Tat für Python nicht schlecht. Meines Wissens gibt es da nichts Vergleichbares. Müsste man mal machen...
Stefan
Etwas wie Wicket wäre in der Tat für Python nicht schlecht. Meines Wissens gibt es da nichts Vergleichbares. Müsste man mal machen...
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich kenne Wicket nicht, bin nur nach der Beschreibung des OP gegangen.sma hat geschrieben:Leonidas, dem würde ich gar nicht zustimmen. Wicket funktioniert grundsätzlich anders als Django mit newforms und wahrscheinlich auch WTForms (was in dem Crashkurs-Dokument genauso aussieht).
Und Nagare scheint mir ziemlich tot zu sein. Der IRC-Channel ist total still und die Webseite war das letzte Mal als ich geschaut habe down.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Etwas wie Apache Wicket könnte sich in Python so anfühlen.
Wir bauen ein Gästebuch, eine Webseite, auf der Leute Kommentare hinterlassen können.
Dies ist so ein Kommentar:
Dies ist die Webseite. Sie ist eine Komponente und besteht aus weiteren Komponenten. Jede Komponente wird als Klasse realisiert:
Dazu kommt ein Template, das über die "wicket:id"-Marker an die Komponenten gebunden wird:
Nun braucht man noch etwas, das alles zusammenhält:
Meine direkte Translation von Java fühlt sich in Python noch etwas hölzern an. Wicket-Code wimmelt von inneren Klassen und impliziten Zuweisungen. Für Python musste ich beide Komponenten-Klassen explizit machen. Und es wimmelt dort nun von "self"s. Implizite Zuweisungen gibt es in Python nicht, an einer Stelle habe ich daher angenommen, dass ich mit ".comments" auf eine unter dem Namen "comments" hinzugefügte Komponente zugreifen kann. Und offenbar kommen alle Klassen des Rahmenwerks aus dem Modul "web".
Stefan
Wir bauen ein Gästebuch, eine Webseite, auf der Leute Kommentare hinterlassen können.
Dies ist so ein Kommentar:
Code: Alles auswählen
class Comment(object):
def __init__(self, text=""):
self.text = text
self.date = datetime.now()
Code: Alles auswählen
class GuestBook(web.Page):
comments = [] # database
def __init__(self):
self.add(self.CommentForm("form"))
self.add(self.CommentListView("comments", self.comments))
class CommentForm(web.Form):
def __init__(self, name):
web.Form.__init__(self, name)
self.comment = Comment()
self.add(web.TextArea("text", web.PropertyModel(self.comment, "text")))
def on_submit(self):
GuestBook.comments.append(Comment(self.comment.text))
self.page.comments.model_changed()
self.comment.text = ""
class CommentListView(web.ListView):
def __init__(self, name, model):
web.ListView.__init__(self, name, model)
def populate_item(self, item):
comment = item.model_object
item.add(web.Label("date", comment.date))
item.add(web.MultiLineLabel("text", comment.text))
Code: Alles auswählen
<html><body>
<form wicket:id="form">
<textarea wicket:id="text">...</textarea>
<input type="submit"/>
</form>
<div wicket:id="comments">
<p><span wicket:id="date">1.1.2004</span><br/><span wicket:id="text">...</span></p>
</div>
</body></html>
Code: Alles auswählen
class GuestBookApplication(web.Application):
home_page = GuestBook
Stefan