Web2py - Komponenten
Eine Komponente ist definiert als der funktionale Teil einer Webseite, der autonom arbeitet. Es kann aus Modulen, Controllern und Ansichten bestehen, die in eine Webseite eingebettet sind. Die Komponente in einer Anwendung muss ein lokalisiertes Tag sein und die Leistung wird als unabhängig vom Modul betrachtet.
In web2py liegt der Schwerpunkt auf der Verwendung von Komponenten, die auf einer Seite geladen sind und über AJAX mit dem Komponentencontroller kommunizieren.
web2py enthält eine Funktion, die als LOAD Funktion, die die Implementierung von Komponenten ohne explizite JavaScript- oder AJAX-Programmierung vereinfacht.
Stellen Sie sich eine einfache Webanwendung vor, nämlich „test"Das erweitert die web2py-Anwendung um ein benutzerdefiniertes Modell in der Datei"models/db_comments.py”.
db.define_table(
'comment_post', Field('body','text',
label = 'Your comment'),auth.signature
)
Mit dem obigen Code wird eine Tabelle erstellt. “comment_post”Mit der richtigen Tabellendefinition. Die Aktion wird mit Hilfe von Funktionen in „controllers/comments.py”.
def post():
return dict(
form = SQLFORM(db.comment_post).process(),
comments = db(db.comment_post).select()
)
Die entsprechende Ansicht wird angezeigt als -
{{extend 'layout.html'}}
{{for post in comments:}}
<div class = "post">
On {{= post.created_on}} {{= post.created_by.first_name}}
says <span class = "post_body">{{= post.body}}</span>
</div>
{{pass}}
{{= form}}
Auf die Seite kann unter der angegebenen URL zugegriffen werden - http://127.0.0.1:8000/test/comments/post
Die oben erwähnte Methode ist eine herkömmliche Methode für den Zugriff auf eine Ansicht, die mit der Implementierung der LOAD-Funktion geändert werden kann.
Dies kann erreicht werden, indem eine neue Ansicht mit der Erweiterung erstellt wird ".load" das erweitert das Layout nicht.
Die neu erstellte Ansicht wäre "views/comments/post.load" - -
<div class = "post">
On {{= post.created_on}} {{= post.created_by.first_name}}
says <blockquote class = "post_body">{{= post.body}}</blockquote>
</div>
{{pass}}
{{= form}}
Die URL für den Zugriff auf die Seite lautet - http://127.0.0.1:8000/test/comments/post.load
Die LOAD-Komponente kann in jede andere Seite der web2py-Anwendung eingebettet werden. Dies kann mithilfe der folgenden Anweisung erfolgen.
{{= LOAD('comments','post.load',ajax = True)}}
Zum Beispiel die Controllers kann bearbeitet werden als -
def index():
return dict()
Im Viewkönnen wir die Komponente hinzufügen -
{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}
Auf die Seite kann über die URL zugegriffen werden - http://127.0.0.1:8000/test/default/index
Komponenten-Plugins
Komponenten-Plugins sind die Plugins, die eindeutig definiert sind Components. Komponenten greifen mit ihrer Modelldefinition direkt auf die Datenbank zu.
Wie im vorherigen Beispiel erwähnt, wird die Kommentarkomponente in a comments_plugin kann in der gemacht werden Models Abschnitt -
""models/plugin_comments.py"-
db.define_table(
'plugin_comments_comment',
Field('body','text', label = 'Your comment'),
auth.signature
)
Das Controller wird das folgende Plugin enthalten -
def plugin_comments():
return LOAD('plugin_comments','post',ajax = True)