Учебники

Web2py — Компоненты

Компонент определяется как функциональная часть веб-страницы, которая работает автономно. Он может состоять из модулей, контроллеров и представлений, которые встроены в веб-страницу. Компонент в приложении должен быть локализованным тегом, а производительность считается независимой от модуля.

В web2py основное внимание уделяется использованию компонентов, которые загружаются на страницу и которые взаимодействуют с контроллером компонентов через AJAX.

web2py включает в себя функцию, которая называется функцией LOAD , которая упрощает реализацию компонентов без явного программирования на JavaScript или AJAX.

Рассмотрим простое веб-приложение, а именно « test », которое расширяет приложение web2py пользовательской моделью в файле « models / db_comments.py ».

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

Приведенный выше код создаст таблицу « comment_post » с правильным определением таблицы. Действие будет реализовано с помощью функций из « controllers / comments.py ».

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

Соответствующий вид будет отображаться как —

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

Доступ к странице можно получить по указанному URL-адресу — http://127.0.0.1:8000/test/comments/post.

Упомянутый выше метод является традиционным способом доступа к представлению, который можно изменить с помощью реализации функции LOAD.

Это может быть достигнуто путем создания нового представления с расширением «.load», которое не расширяет макет.

Новый созданный вид будет «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 для доступа к странице будет — http://127.0.0.1:8000/test/comments/post.load

Компонент LOAD может быть встроен в любую другую страницу приложения web2py. Это можно сделать с помощью следующего утверждения.

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

Например, контроллеры могут быть отредактированы как —

def index():
   return dict()

В View мы можем добавить компонент —

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

Доступ к странице можно получить по URL — http://127.0.0.1:8000/test/default/index.

Компонент плагины

Компонент плагины — это плагины, которые однозначно определяют Компоненты . Компоненты обращаются к базе данных напрямую с помощью определения модели.

Как упоминалось в предыдущем примере, компонент комментариев в comments_plugin может быть сделан в разделе Models

» models / plugin_comments.py » —

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

Контроллер будет включать в себя следующий плагин —