Web2py - Componenti

Un componente è definito come la parte funzionale di una pagina web, che funziona in modo autonomo. Può essere composto da moduli, controller e viste, che sono incorporati in una pagina web. Il componente in un'applicazione, deve essere tag localizzato e le prestazioni sono considerate indipendenti dal modulo.

In web2py, l'obiettivo principale è l'utilizzo di componenti caricati nella pagina e che comunicano con il controller dei componenti tramite AJAX.

web2py include una funzione, chiamata LOAD funzione, che semplifica l'implementazione dei componenti senza una programmazione JavaScript o AJAX esplicita.

Considera una semplice applicazione web, ovvero "test"Che estende l'applicazione web2py con il modello personalizzato nel file"models/db_comments.py".

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

Il codice sopra creerà una tabella "comment_post"Con la corretta definizione della tabella. L'azione sarà implementata con l'ausilio di funzioni in "controllers/comments.py".

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

La vista corrispondente verrà visualizzata come:

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

È possibile accedere alla pagina utilizzando l'URL fornito - http://127.0.0.1:8000/test/comments/post

Il metodo sopra menzionato è un modo tradizionale di accedere a una vista, che può essere modificato con l'implementazione della funzione LOAD.

Ciò può essere ottenuto creando una nuova vista con l'estensione ".load" che non estende il layout.

La nuova vista creata sarebbe "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 per accedere alla pagina sarebbe: http://127.0.0.1:8000/test/comments/post.load

Il componente LOAD può essere incorporato in qualsiasi altra pagina dell'applicazione web2py. Questo può essere fatto usando la seguente dichiarazione.

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

Ad esempio, il file Controllers può essere modificato come -

def index():
   return dict()

In View, possiamo aggiungere il componente -

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

È possibile accedere alla pagina con l'URL - http://127.0.0.1:8000/test/default/index

Plugin dei componenti

I plugin dei componenti sono i plugin, che definiscono in modo univoco Components. I componenti accedono direttamente al database con la loro definizione del modello.

Come accennato nell'esempio precedente, il componente commenti in un file comments_plugin può essere fatto in Models sezione -

"models/plugin_comments.py"-

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

Il Controller includerà il seguente plugin:

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