web2py官方文档翻译01
第一章:介绍
介绍
web2py(web2py)是一个免费的开源web框架的敏捷开发安全的数据库驱动的web应用程序,这是用Python编写的Python(Python)和可编程。web2py是一个完整的框架,也就是说,它包含了所有你需要的组件构建功能齐全的web应用程序。
web2py旨在引导web开发人员遵循良好的软件工程实践,如使用模型-视图-控制器(MVC)模式。web2py分离数据表示(模型)的数据显示(视图)和从应用程序逻辑和工作流(控制器)。web2py提供库来帮助开发人员设计、实现,和测试这三个部分分别,让他们一起工作。
web2py安全。这意味着它会自动解决的许多问题,可能导致安全漏洞,通过遵循良好的实践。例如,它验证所有输入(防止注射),逃离所有输出(防止跨站点脚本),重命名上传的文件(以防止目录遍历攻击)。web2py负责主要安全问题,因此开发人员较少引入漏洞的机会。
web2py包括一个数据库抽象层(DAL)动态SQL(sql-w)这样你写道,开发人员不需要。木豆知道如何生成SQL透明SQLite SQLite,MySQL(MySQL),PostgreSQL[postgres],该软件[该],火鸟火鸟,甲骨文(Oracle),IBM DB2(DB2),Informix(Informix)和安格尔(ingresdb)。
谷歌的木豆也能生成函数调用数据存储在Google App Engine(GAE)上运行(GAE)。实验我们支持多个数据库和新的不断补充道。请检查web2py网站和邮件列表的最近的适配器。一旦定义了一个或多个数据库表,web2py自动生成一个功能齐全的web数据库管理界面来访问数据库和表。
web2py与其他web框架的不同之处在于,它是唯一框架完全接受web 2.0模式,网络是计算机。事实上,web2py不需要安装或配置,它运行在任何体系结构,可以运行Python(Windows,Windows CE,Mac OS X,iOS和Unix / Linux),和开发、部署和维护阶段的应用程序可以通过一个本地或远程web界面。web2py运行与CPython(C实现)和PyPy(Python编写的Python),Python版本2.5,2.6和2.7。
web2py提供票务系统错误事件。如果出现错误,一张票发给用户,管理员的错误记录。
web2py是开放源代码的,版本3 LGPL许可下发布。
web2py是我们的另一个重要特性,它的开发人员,致力于保持在未来版本的向后兼容性。首次发布以来,我们已经这么做了web2py去年10月,2007年。添加了新功能和错误已经修复,但如果一个程序使用过web2py 1.0,今天计划将工作更好。
这里有一些例子web2py语句,说明它的力量和简单性。下面的代码:
db。define_table(‘人’,字段(“名字”),字段(“形象”,“上传”))
创建一个数据库表称为“人”两个字段:“名字”,一个字符串;和“图像”,需要上传(实际的图像)。如果表已经存在但不匹配这个定义,它是适当的改变。
鉴于上面的表定义,下面的代码:
形式= SQLFORM(db.person).process()
创建这个表的插入表单,允许用户上传图像。它也验证提交的表单,以安全的方式重命名上传图像,将图像存储在一个文件,插入相应的记录在数据库中,防止双屈服,最终修改表单本身通过添加错误消息,如果用户提交的数据没有通过验证。
这段代码嵌入一个完全工作wiki标记,搜索,标签云,权限,媒体附件,和oembed支持:
def指数():返回auth.wiki()
下面的代码:
@auth.requires_permission(“读”,“人”)
def f():....
阻止游客访问成员函数f,除非客人是一组其成员的权限“读”表中“人”的记录。如果用户没有登录,游客被定向到一个登录页面(默认情况下通过web2py提供)。
web2py还支持组件,即行为可以装载在一个视图和与游客通过Ajax交互没有通条和枪管撞击整个页面。这是通过一个负载助手允许模块化设计的应用程序;它是在第三章讨论在wiki的背景下,在一些细节,在这本书的最后一章。
这第六版的书描述了web2py 2.4.1和后来的版本。
原则
Python编程通常遵循这些基本原则:
不要重复自己(干)。
应该只有一个做事的方式。
显式优于隐式。
web2py完全包含前两个原则,迫使开发人员使用良好的软件工程实践,减少重复代码。web2py指导开发人员完成几乎所有web应用程序开发中常见的任务(创建和处理形式,管理会议,饼干,错误,等等)。
web2py不同于其他框架对第三原则,有时与其他两个冲突。特别是web2py不导入用户应用程序,但他们在一个预定义的上下文中执行。这种情况下暴露了Python的关键词,以及web2py关键词。
这可能会出现一些魔法,但它不应该。简单,在实践中,一些模块已经没有你这样做进口。web2py试图避免恼人的其他框架的特点,迫使开发人员导入相同的每个模型和控制器模块的顶部。
web2py,通过导入自己的模块,节省时间,防止错误,因此在“不要重复自己”的精神和“应该有只有一个做事的方式”。
如果开发人员希望使用其他Python模块或第三方模块,这些模块必须显式导入,如其他Python程序。
Web框架
在最基本的层面上,web应用程序由一组程序(或函数)时执行相应的URL访问。程序的输出返回给游客和浏览器呈现的。
web框架的目的是为了使开发人员能够快速构建新的应用程序,轻松,没有错误。这是通过提供的api和工具,减少和简化编码所需的数量。
开发web应用程序的两种经典的方法是:
以编程方式生成HTML(html-w][html-o]。
将代码嵌入到HTML页面。
第一个模型是之后,例如,通过早期的CGI脚本。第二个模型,例如,通过PHP(PHP)(PHP代码,一个c语言),ASP在Visual Basic(代码),和JSP(Java代码)。
这是一个PHP程序的一个例子,执行时,从数据库中检索数据,并返回一个HTML页面显示选中的记录:
身体< html > < > < h1 > < / h1 > <记录?
mysql_connect(主机、用户名、密码);
@mysql_select_db(数据库)或死亡(“无法选择数据库”);
查询美元= " SELECT * FROM联系人”;
美元$结果= mysql_query(查询);
mysql_close();
$ i = 0;
美元($我< mysql_numrows(结果)){
结果(name = mysql_result美元,美元我,“名字”);
$电话= mysql_result(因此,美元我,“电话”);
回声”< b >美元名字< / b > < br >电话:电话美元< br / > < br / > <人力资源/ > < br / >”;
美元我+ +;
}
身体? > < / > < / html >
这种方法的问题是,代码嵌入到HTML,但同一代码也需要生成额外的HTML和生成SQL语句来查询数据库,涉及到多层的应用程序,使其难以阅读和维护。Ajax应用程序的情况更糟,和复杂性增加的页数(文件)的应用程序。
上面的例子中可以表达的功能在web2py两行Python代码:
def指数():
返回的HTML(身体(H1(记录),db().select(db.contacts.ALL)))
在这个简单示例中,HTML页面结构表示HTML编程,身体,和H1对象,查询数据库db的select命令;最后,一切都是序列化成HTML。请注意,db不是关键字而是一个用户定义的变量。我们将使用这个名字一直引用一个数据库连接,以避免混乱。
Web框架通常分为两种类型:“粘”框架是由装配(粘在一起)几个第三方组件。一个“完整的框架是由创建组件专门紧密集成和协同工作。
web2py是一个完整的框架。几乎所有的组件都是从零开始,是为了一起工作,但他们完整的web2py框架之外的函数一样。例如,数据库抽象层(DAL)或可以使用模板语言独立于web2py框架通过导入胶子。木豆或胶子。到自己的Python应用程序的模板。胶子是web2py模块的名称,包含系统库。一些web2py库,如建筑和处理形式从数据库表,web2py依赖于其他部分。web2py也可以使用第三方Python库,包括其他模板语言和木豆,但是他们不会像紧密集成与原始组件。
模型-视图-控制器
web2py鼓励开发人员独立的数据表示(模型),数据显示(视图)和应用程序工作流(控制器)。让我们再考虑前面的例子,看看如何构建一个web2py应用程序。这是一个例子的web2py MVC编辑界面:
web2py官方文档翻译01的更多相关文章
- web2py官方文档翻译
00前言 我相信能够轻松地构建高质量增长的web应用程序是至关重要的一个自由和开放的社会.这可以防止玩家最大的垄断信息的流通. 因此我从2007年开始web2py项目,主要是作为一种教学工具与简化we ...
- CALayer---iOS-Apple苹果官方文档翻译之CALayer
CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...
- kong插件官方文档翻译
kong插件官方文档翻译 目录 介绍 文件结构 编写自定义逻辑 存储配置 访问数据存储 自定义实体 缓存自定义实体 扩展Admin API 编写测试 (卸载)安装你的插件 插件开发 - 介绍 什么是插 ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)
Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng
Aircrack-ng官方文档翻译---Airdecap-ng Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...
- Aircrack-ng官方文档翻译[中英对照]---Airmon-ng
Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...
随机推荐
- 写一个Windows上的守护进程(1)开篇
写一个Windows上的守护进程(1)开篇 最近由于工作需要,要写一个守护进程,主要就是要在被守护进程挂了的时候再把它启起来.说起来这个功能是比较简单的,但是我前一阵子写了好多现在回头看起来比较糟糕的 ...
- IRP 与 派遣函数
什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念.驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的.也就是说,派遣函数是用来处理驱动程序提交过来的 I ...
- ( function(){…} )()
javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解. ( f ...
- JQuery动态表格
功能实现:点击添加按钮,表格增加一行并给其name属性赋予的值,方便获取 点击删除,自动删除这一行 JQuery中定义一个count变量 var count = 1; function add() { ...
- 关于twitter的GIF变mp4的测试
这个事是好久之前听说了,今天FQ的时候突然想起来了,就去测试了一下这个gif转MP4到底有多神奇... 这个是我的twitter地址:https://twitter.com/chendatony31 ...
- 三角形(hd1249)
三角形 Problem Description 用N个三角形最多可以把平面分成几个区域? Input 输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后 ...
- table的样式定义
table的cellpadding和cellpadding我们经常会用如下的方式来清除默认样式: <table cellspacing="0" cellpadding=&qu ...
- Delphi与Javascript的交互
网络上也有人写了关于Delphi与Javascript的文章,其大多数使用ScriptControl等,均无法达到与Delphi自身融合的效果.我也是在翻阅自己的组件库的时候发现了这个以前收集来的代码 ...
- 闲来瞎扯 -- 在vs2008下编写linux程序
虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是 ...
- 【the service mysql57 failed the most】
异常信息: the the service mysql57 failed the most recent status change request with the messagethe servi ...