开发手册 欢迎您!
软件开发者资料库

Web2py - 组件

Web2py组件 - 从简介,Python语言,框架概述,核心,视图,数据库抽象层,表单和验证器,电子邮件和SMS,访问控制,服务,添加AJAX效果,组件,部署,安全性开始学习Web2py。

组件被定义为网页的功能部分,它可以自主运行.它可以由嵌入在网页中的模块,控制器和视图组成.应用程序中的组件必须是本地化标记,并且性能被视为独立于模块.

在web2py中,主要关注的是使用在页面中加载的组件以及哪些内容进行通信通过AJAX与组件控制器一起使用.

web2py包含一个函数,称为 LOAD 函数,无需显式JavaScript或AJAX编程即可轻松实现组件.

考虑一个简单的Web应用程序,即" 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:}}   On {{= post.created_on}} {{= post.created_by.first_name}}   says {{= post.body}}
{{pass}}{{= form}}

可以使用给定的URL访问该页面 : 去; http://127.0.0.1:8000/test/comments/post

上述方法是一种访问视图的传统方式,可以更改实现LOAD函数.

这可以通过创建一个扩展名为".load"但不扩展布局的新视图来实现.

创建的新视图将是"views/comments/post.load" :

   On {{= post.created_on}} {{= post.created_by.first_name}}   says {{= post.body}}
{{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)