Web2py - Bileşenler
Bir bileşen, bir web sayfasının bağımsız olarak çalışan işlevsel kısmı olarak tanımlanır. Bir web sayfasına gömülü modüller, denetleyiciler ve görünümlerden oluşabilir. Bir uygulamadaki bileşen yerelleştirilmiş etiket olmalıdır ve performans modülden bağımsız olarak kabul edilir.
Web2py'de ana odak, sayfaya yüklenen ve bileşen denetleyiciyle AJAX aracılığıyla iletişim kuran bileşenleri kullanmaktır.
web2py, LOAD açık JavaScript veya AJAX programlaması olmadan bileşenlerin uygulanmasını kolaylaştıran işlev.
Basit bir web uygulamasını düşünün: "test"Web2py uygulamasını dosyadaki özel modelle genişleten"models/db_comments.py”.
db.define_table(
'comment_post', Field('body','text',
label = 'Your comment'),auth.signature
)
Yukarıdaki kod bir tablo oluşturacaktır "comment_post"Uygun tablo tanımı ile. Eylem, "controllers/comments.py”.
def post():
return dict(
form = SQLFORM(db.comment_post).process(),
comments = db(db.comment_post).select()
)
İlgili görünüm şu şekilde görüntülenecektir -
{{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}}
Sayfaya verilen URL kullanılarak erişilebilir - http://127.0.0.1:8000/test/comments/post
Yukarıda bahsedilen yöntem, LOAD işlevinin uygulanmasıyla değiştirilebilen, bir görünüme erişmenin geleneksel bir yoludur.
Bu, uzantı ile yeni bir görünüm oluşturarak elde edilebilir. ".load" bu düzeni genişletmez.
Oluşturulan yeni görünüm "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}}
Sayfaya erişim URL'si şu şekilde olacaktır: http://127.0.0.1:8000/test/comments/post.load
LOAD bileşeni, web2py uygulamasının diğer herhangi bir sayfasına yerleştirilebilir. Bu, aşağıdaki ifade kullanılarak yapılabilir.
{{= LOAD('comments','post.load',ajax = True)}}
Örneğin, Controllers olarak düzenlenebilir -
def index():
return dict()
İçinde View, bileşeni ekleyebiliriz -
{{extend 'layout.html'}}
{{= LOAD('comments','post.load',ajax = True)}}
Sayfaya URL ile erişilebilir - http://127.0.0.1:8000/test/default/index
Bileşen Eklentileri
Bileşen eklentileri, benzersiz şekilde tanımlayan eklentilerdir. Components. Bileşenler, veritabanına doğrudan model tanımlarıyla erişir.
Önceki örnekte belirtildiği gibi, yorumlar bileşeni bir comments_plugin yapılabilir Models bölüm -
"models/plugin_comments.py"-
db.define_table(
'plugin_comments_comment',
Field('body','text', label = 'Your comment'),
auth.signature
)
Controller aşağıdaki eklentiyi içerecek -
def plugin_comments():
return LOAD('plugin_comments','post',ajax = True)