Web2py - Komponen
Komponen didefinisikan sebagai bagian fungsional dari halaman web, yang bekerja secara mandiri. Ini dapat terdiri dari modul, pengontrol, dan tampilan, yang disematkan di halaman web. Komponen dalam aplikasi, harus dilokalkan dengan tag dan kinerja dianggap independen dari modul.
Di web2py, fokus utamanya adalah menggunakan komponen yang dimuat di halaman dan yang berkomunikasi dengan pengontrol komponen melalui AJAX.
web2py menyertakan sebuah fungsi, yang disebut LOAD fungsi, yang membuat implementasi komponen mudah tanpa JavaScript eksplisit atau pemrograman AJAX.
Pertimbangkan aplikasi web sederhana yaitu "test"Yang memperluas aplikasi web2py dengan model kustom dalam file"models/db_comments.py".
db.define_table(
'comment_post', Field('body','text',
label = 'Your comment'),auth.signature
)
Kode diatas akan membuat tabel “comment_post"Dengan definisi tabel yang tepat. Tindakan tersebut akan diimplementasikan dengan bantuan fungsi di "controllers/comments.py".
def post():
return dict(
form = SQLFORM(db.comment_post).process(),
comments = db(db.comment_post).select()
)
Tampilan terkait akan ditampilkan sebagai -
{{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}}
Halaman ini dapat diakses menggunakan URL yang diberikan - http://127.0.0.1:8000/test/comments/post
Metode yang disebutkan di atas adalah cara tradisional untuk mengakses tampilan, yang dapat diubah dengan penerapan fungsi LOAD.
Ini dapat dicapai dengan membuat tampilan baru dengan ekstensi ".load" yang tidak memperluas tata letak.
Tampilan baru yang dibuat akan menjadi "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}}
URL untuk mengakses halaman tersebut adalah - http://127.0.0.1:8000/test/comments/post.load
Komponen LOAD dapat disematkan ke halaman lain dari aplikasi web2py. Ini dapat dilakukan dengan menggunakan pernyataan berikut.
{{= LOAD('comments','post.load',ajax = True)}}
Misalnya, file Controllers dapat diedit sebagai -
def index():
return dict()
Di View, kita dapat menambahkan komponen -
{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}
Halaman dapat diakses dengan URL - http://127.0.0.1:8000/test/default/index
Plugin Komponen
Plugin komponen adalah plugin yang didefinisikan secara unik Components. Komponen mengakses database secara langsung dengan definisi modelnya.
Seperti yang disebutkan pada contoh sebelumnya, komponen komentar menjadi a comments_plugin bisa dilakukan di Models bagian -
"models/plugin_comments.py"-
db.define_table(
'plugin_comments_comment',
Field('body','text', label = 'Your comment'),
auth.signature
)
Itu Controller akan menyertakan plugin berikut -
def plugin_comments():
return LOAD('plugin_comments','post',ajax = True)