Web2py组件 Web2py添加Ajax效果 Web2py部署 组件被定义为网页的功能部分,该网页自主工作。它可以由嵌入在网页中的模块,控制器和视图组成。应用程序中的组件必须是本地化的标记,并且性能被视为独立于模块。 在web2py中,主要关注使用在页面中加载的组件,并通过AJAX与组件控制器进行通信。 web2py包含一个称为 LOAD 函数的函数,该函数使得组件的实现变得非常简单,无需显式JavaScript或AJAX编程。 考虑一个简单的Web应用程序,即“ 测试 ”,它将文件“ 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() 在 View中 ,我们可以添加组件 - {{extend 'layout.html'}} {{= LOAD('comments','post.load',ajax = True)}} 该页面可以通过URL - http://127.0.0.1:8000/test/default/index 访问 组件插件 组件插件是唯一定义 组件 的插件。组件直接使用模型定义访问数据库。 正如在前面的例子中提到的,评论组件可以在 模型 部分中完成 - comments_plugin “ 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) Web2py添加Ajax效果 Web2py部署