web2py基础教程(2)
Pycharm建立web2py项目并简单连接MySQL数据库
引言
web2py是一种免费的,开源的web开发框架,用于敏捷地开发安全的,数据库驱动的web应用;web2p采用Python语言编写,并且可以使用Python编程。web2py是一个完整的堆栈框架,也就是说她包含了开发完整功能的web应用所需的所有组件。
web2py被设计来指导web开发人员遵循良好的软件工程实践,如使用模型(Model),视图(View),控制器(Controller)MVC模式。web2py将数据表达(the model)从数据表示(the view)和应用逻辑及工作流(the controller)中分开。web2py提供的库可以帮助开发者分别设计,实施和测试MVC中的每一部分,并能使它们一起工作。
web2py是为了安全而构建的。这意味着遵循成熟的方法,他能自动处理很多可能导致安全漏洞的问题。例如web2py验证所有输入(防止注入攻击),转义所有输出(防止跨站点脚本攻击),重命名上传文件(防止目录遍历攻击)。在与安全有关的方面,web2py没有留给应用程序开发人员选择的余地。
web2py中包含数据库抽象层(DAL),它能够动态写入SQL[sql:w] ,因此开发人员不需要自己写。DAL知道如何透明地生成支持SQLite[sqlite] ,MySQL[mysql] ,PostgreSQL[postgres] ,MSSQL[mssql] ,FireBird[firebird] , Oracle[oracle] ,IBM DB2[db2] ,Informix[informix] 以及Ingres[ingresdb] 的SQL语句。当在谷歌App Engine (GAE)[gae]上运行时,DAL也能生成函数调用Google Datastore。实验时,我们支持更多的数据库。请查看web2py网站和邮件列表,获取最新的支持。一旦有一个或多个数据库表被定义,web2py也能生成一个全功能的基于web的数据库管理接口来访问数据库和表。
web2py与其它web框架的不同之处在于,它是唯一全面支持web2.0范例的框架,在这里web就是计算机。实际上,web2py不需要安装或配置,它能在任何支持Python的体系结构(Windows,,Windows CE,Mac OS X,iOS ,Unix/Linux)上运行,应用程序的开发、部署和维护可以通过本地或远程web接口完成。web2py支持CPython(C语言实现)或Jython(Java语言实现),虽然官方声称仅支持2.5版本,但实际支持的版本包括2.4,2.5,2.6,2.7,这保证了应用程序的后向兼容性。
web2py提供了一个票据系统。如果出现错误,系统会发出一个票据给用户,并记录错误信息供管理员查看。
下面给出一些web2py语句的例子来展示它的功能和简洁性。代码如下:
db=DAL("mysql://root:Free-Wi11@10.0.20.252:3306/mybatis")
db.define_table('users',Field('id'),Field('name'),Field('age'),primarykey=['id'],migrate=False)
原则
Python编程通常遵循以下基本原则:
- 不重复自己(DRY)。
- 仅有一种实现方式。
- 明确比含蓄更好。
在web2py中,通过强制开发者使用可靠成熟的软件工程实践,遏制代码重复,保证完全遵守前两条原则。web2py能指导开发者完成几乎所有web应用开发中的常见任务(创建和处理表单,管理会话,小甜饼“cookie”,错误等等)。
web2py对第3个原则的处理与其它框架有所不同,有时与前两个原则相冲突。尤其是web2py不会导入用户应用,而是在预定义的情况下执行。这会暴露Python和web2py关键字。
对某些人来说,这看起来就像魔术,但它不是这样的。简单地说,在实践中有些模块已经自动导入了,而不需要开发者导入。web2py试图避免其它框架下存在的令人讨厌的特征,即开发者需要在每个模型和控制器的顶部导入相同的模块。
web2py通过导入自有模块节约了时间,避免了错误,这遵循了不重复自己和仅有一种实现方式的精髓。
如果开发者想使用其它Python模块或第三方模块,这些模块必须明确导入,就像开发任何其它Python程序一样。
Web框架
在其最基本的层面上,web应用包含了一组程序(或者函数),当用户访问相应的URL时,该程序将被执行。同时,程序的输出返回给用户,并呈现在浏览器中。
web框架是为了让开发者更快,更简洁,无差错的开发新应用。它通过提供API和开发工具,以减少代码的编写量。
开发web应用的两个经典方法是:
- 通过编程生成HTML代码
- 将代码嵌入HTML页面中
早期的CGI脚本遵循第一种模型。下列脚本遵循第二种模型,例如PHP[php](代码用PHP编写,类似C语言)、ASP(代码用Visual Basic编写)以及JSP(代码用Java编写)脚本。
这里举一个PHP程序的例子,执行时,从数据库中获得数据,并返回一个显示选中记录的HTML页面。
<html><body><h1>Records</h1><?mysql_connect(localhost,username,password);@mysql_select_db(database) or die( "Unable to select database");$query="SELECT * FROM contacts";$result=mysql_query($query);mysql_close();$i=0;while ($i < mysql_numrows($result)) {$name=mysql_result($result,$i,"name");$phone=mysql_result($result,$i,"phone");echo "<b>$name</b><br>Phone:$phone<br /><br /><hr /><br />";$i++;}
?></body></html>
web2py基础教程(2)相关推荐
- Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现
自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...
- [SQL基础教程] 1-5 表的删除和更新
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...
- python 包用法_Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...
- Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0.由于该版本除了Bug修复之外,还提供了几个生产管理非常重要 ...
- Python培训基础教程都教哪些
根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...
- 深度学习之Pytorch基础教程!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 随着深度学习的发展 ...
- python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...
时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...
- %3c- r语言运算符,R语言基础教程之运算符
原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...
- python分类器鸢尾花怎么写_python机器学习基础教程-鸢尾花分类
一: 环境准备: 1.导入的库: importnumpy as npimportmatplotlib.pyplot as pltimportpandas as pdimport mglearn 2.导 ...
最新文章
- Flutter 导包 以及体验
- Java 性能优化的 45 个细节
- 关系数据库标准语言 SQL (ch.3)
- Struts2三种传参方式(从jsp页面传到Action)
- P1739 表达式括号匹配
- 简化Swagger使用的自制Starter:spring-boot-starter-swagger,欢迎使用和吐槽
- 第九章 单处理器调度
- PicoDet论文译读笔记
- hihoCoder 1378 网络流二·最大流最小割定理 (网络流学习#2 记录)
- java定长池,java线程池源码学习
- H3CTE讲师分享H3C认证培训实验9 IP基础
- php面试题目(中等水平)
- 个是云计算,一个大数据,一个人工智能,
- python输出字母金字塔a bb ccc dddd_《程序设计基础》题库(50道)
- 隐藏服务器header与web软件版本信息
- 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...
- python_numpy_计算对数收益率和还原问题
- BERT模型—1.BERT模型架构
- Tensorflow-Caffe学习之路(一)Windows Anaconda3安装Caffe环境
- PostgreSQL+PostGIS实现两坐标点之间最短路径查询算法函数(地图工具篇.12)
热门文章
- Oracle笔记 之 分组统计排名函数dense_rank/rank()-over()函数
- hadoop搭建好后,页面访问不了
- Problem E: 质心算法
- 教师节浙大颁出百万大奖,国内编程教育引路人翁恺获殊荣
- 数字图像处理知识(空间滤波)
- 过度依赖Android国产手机厂商警惕重蹈DVD覆辙
- 福禄克FLUKE LinkIQ智能链路通(LIQ-100,LIQ-KIT)从开箱到设置、从陌生到熟悉
- 强大的 Postman --- API 管理工具
- 通俗易懂方差(Variance)和偏差(Bias)
- python如何检测是否按下ESC键