Web2py - Componentes

Un componente se define como la parte funcional de una página web, que funciona de forma autónoma. Puede estar compuesto por módulos, controladores y vistas, que están incrustados en una página web. El componente de una aplicación debe ser una etiqueta localizada y el rendimiento se considera independiente del módulo.

En web2py, el enfoque principal está en el uso de componentes que se cargan en la página y que se comunican con el controlador de componentes a través de AJAX.

web2py incluye una función, que se llama LOAD función, que facilita la implementación de componentes sin programación explícita de JavaScript o AJAX.

Considere una aplicación web simple a saber "test"Que amplía la aplicación web2py con un modelo personalizado en el archivo"models/db_comments.py”.

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

El código anterior creará una tabla "comment_post”Con la definición de tabla adecuada. La acción se implementará con la ayuda de funciones en "controllers/comments.py”.

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

La vista correspondiente se mostrará como -

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

Se puede acceder a la página utilizando la URL proporcionada: http://127.0.0.1:8000/test/comments/post

El método mencionado anteriormente es una forma tradicional de acceder a una vista, que se puede cambiar con la implementación de la función LOAD.

Esto se puede lograr creando una nueva vista con la extensión ".load" eso no amplía el diseño.

La nueva vista creada sería "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}}

La URL para acceder a la página sería: http://127.0.0.1:8000/test/comments/post.load

El componente LOAD se puede incrustar en cualquier otra página de la aplicación web2py. Esto se puede hacer usando la siguiente declaración.

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

Por ejemplo, el Controllers se puede editar como -

def index():
   return dict()

En View, podemos agregar el componente -

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

Se puede acceder a la página con la URL: http://127.0.0.1:8000/test/default/index

Complementos de componentes

Los complementos de componentes son los complementos, que definen de manera única Components. Los componentes acceden a la base de datos directamente con su definición de modelo.

Como se mencionó en el ejemplo anterior, el componente de comentarios en un comments_plugin se puede hacer en el Models sección -

"models/plugin_comments.py"-

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

los Controller incluirá el siguiente complemento:

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