Web2py 组件

Web2py 组件

一个组件被定义为网页的功能部分,可以自主地运行。它可以由嵌入在网页中的模块、控制器和视图组成。应用中的组件必须是本地化的标签,并且性能被认为是与模块无关的。

在web2py中,主要关注的是使用在页面加载并通过AJAX与组件控制器通信的组件。

web2py包括一个名为 LOAD 的函数,它使得实现组件变得容易,无需显式的JavaScript或AJAX编程。

考虑一个简单的网络应用程序,即名为” test “的应用程序,它在文件” models/db_comments.py “中扩展了web2py应用程序的自定义模型。

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()

视图 中,我们可以添加组件 –

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

控制器将包含以下插件−

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程