Web2py - Composants

Un composant est défini comme la partie fonctionnelle d'une page Web, qui fonctionne de manière autonome. Il peut être composé de modules, de contrôleurs et de vues, qui sont intégrés dans une page Web. Le composant dans une application, doit être une balise localisée et les performances sont considérées comme indépendantes du module.

Dans web2py, l'objectif principal est d'utiliser des composants qui sont chargés dans la page et qui communiquent avec le contrôleur de composants via AJAX.

web2py inclut une fonction, appelée LOAD , qui facilite la mise en œuvre des composants sans programmation JavaScript ou AJAX explicite.

Considérez une application Web simple, à savoir "test"Qui étend l'application web2py avec un modèle personnalisé dans le fichier"models/db_comments.py».

db.define_table(
   'comment_post', Field('body','text',
   label = 'Your comment'),auth.signature
)

Le code ci-dessus créera un tableau "comment_post”Avec la définition de table appropriée. L'action sera mise en œuvre à l'aide de fonctions dans «controllers/comments.py».

def post():
   return dict(
      form = SQLFORM(db.comment_post).process(),
      comments = db(db.comment_post).select()
   )

La vue correspondante sera affichée comme -

{{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}}

La page est accessible en utilisant l'URL donnée - http://127.0.0.1:8000/test/comments/post

La méthode mentionnée ci-dessus est une manière traditionnelle d'accéder à une vue, qui peut être modifiée avec l'implémentation de la fonction LOAD.

Ceci peut être réalisé en créant une nouvelle vue avec l'extension ".load" cela ne prolonge pas la mise en page.

La nouvelle vue créée serait "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}}

L'URL pour accéder à la page serait - http://127.0.0.1:8000/test/comments/post.load

Le composant LOAD peut être intégré dans n'importe quelle autre page de l'application web2py. Cela peut être fait en utilisant l'instruction suivante.

{{= LOAD('comments','post.load',ajax = True)}}

Par exemple, le Controllers peut être édité comme -

def index():
   return dict()

Dans View, nous pouvons ajouter le composant -

{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}

La page est accessible avec l'URL - http://127.0.0.1:8000/test/default/index

Plugins de composants

Les plugins de composants sont les plugins, qui définissent de manière unique Components. Les composants accèdent directement à la base de données avec leur définition de modèle.

Comme mentionné dans l'exemple précédent, commente le composant dans un comments_plugin peut être fait dans le Models section -

"models/plugin_comments.py"-

db.define_table(
   'plugin_comments_comment',
   Field('body','text', label = 'Your comment'),
   auth.signature
)

le Controller inclura le plugin suivant -

def plugin_comments():
   return LOAD('plugin_comments','post',ajax = True)