Web2py - Componentes
Um componente é definido como a parte funcional de uma página da web, que funciona de forma autônoma. Ele pode ser composto de módulos, controladores e visualizações, que estão embutidos em uma página da web. O componente em uma aplicação deve ser um tag localizado e o desempenho é considerado independente do módulo.
No web2py, o foco principal é o uso de componentes que são carregados na página e que se comunicam com o controlador de componente via AJAX.
web2py inclui uma função, que é chamada de LOAD função, que torna a implementação de componentes fácil sem JavaScript ou programação AJAX explícita.
Considere um aplicativo da web simples chamado “test”Que estende o aplicativo web2py com modelo personalizado no arquivo“models/db_comments.py”.
db.define_table(
'comment_post', Field('body','text',
label = 'Your comment'),auth.signature
)
O código acima irá criar uma tabela “comment_post”Com a definição de tabela adequada. A ação será implementada com a ajuda de funções em “controllers/comments.py”.
def post():
return dict(
form = SQLFORM(db.comment_post).process(),
comments = db(db.comment_post).select()
)
A visualização correspondente será exibida 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}}
A página pode ser acessada usando o URL fornecido - http://127.0.0.1:8000/test/comments/post
O método mencionado acima é uma forma tradicional de acessar uma visualização, que pode ser alterada com a implementação da função LOAD.
Isso pode ser obtido criando uma nova visualização com a extensão ".load" isso não estende o layout.
A nova visão criada seria "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}}
O URL para acessar a página seria - http://127.0.0.1:8000/test/comments/post.load
O componente LOAD pode ser incorporado em qualquer outra página do aplicativo web2py. Isso pode ser feito usando a seguinte instrução.
{{= LOAD('comments','post.load',ajax = True)}}
Por exemplo, o Controllers pode ser editado como -
def index():
return dict()
Dentro View, podemos adicionar o componente -
{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}
A página pode ser acessada com o URL - http://127.0.0.1:8000/test/default/index
Plugins de componentes
Os plug-ins de componentes são os plug-ins, que definem exclusivamente Components. Os componentes acessam o banco de dados diretamente com sua definição de modelo.
Conforme mencionado no exemplo anterior, o componente de comentários em um comments_plugin pode ser feito no Models seção -
"models/plugin_comments.py"-
db.define_table(
'plugin_comments_comment',
Field('body','text', label = 'Your comment'),
auth.signature
)
o Controller irá incluir o seguinte plugin -
def plugin_comments():
return LOAD('plugin_comments','post',ajax = True)