如何使用Web2py框架快速构建您的Python应用程序
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
介绍
Python 编程语言是一种通用的高级语言,可以轻松用于 Web 编程以及其他任务。 自己构建 Web 应用程序可能既困难又费力。 Web 框架承担了大部分繁重的工作,并且可以设置模板来轻松构建您的 Web 应用程序。
Python 有许多不同的 Web 框架。 其中最有趣的是 web2py。 Web2py 是一个全栈 Web 框架,可用于完全开发您的 Web 应用程序。 它具有 SQL 数据库集成、多线程 Web 服务器,并带有用于设计程序的完整 Web IDE。
这使您可以从任何可以访问 Web 浏览器的地方轻松地使用统一的界面进行编程。 您可以在同一界面中轻松创建和测试您的应用程序。
我们将在 Ubuntu 12.04 VPS 上安装和使用这个框架。
安装 Web2py 软件
您的 Ubuntu 服务器实例应该已经默认安装了 Python。 这解决了 web2py 成功运行所需的唯一事情之一。
我们唯一需要安装的其他软件是 unzip
包,这样我们就可以从我们将下载的 zip 文件中提取 web2py 文件:
sudo apt-get update sudo apt-get install unzip
现在,我们可以从项目的网站上获取框架。 我们将把它下载到我们的主文件夹:
cd ~ wget http://www.web2py.com/examples/static/web2py_src.zip
现在,我们可以解压缩刚刚下载的文件并移入:
unzip web2py_src.zip cd web2py
现在我们在 web2py 目录中,我们如何安装它? 嗯,关于 web2py 的一大优点是您无需安装它。 您可以通过键入以下内容直接从该文件夹运行它:
python web2py.py
但是,这只会启动可在本地计算机上访问的 Web 界面。 这是一项安全功能,但它对我们没有帮助,因为我们的框架托管在远程 droplet 上。
要停止服务器,请在终端中键入“CTRL-C”。 我们将立即解决网络访问问题。
创建 SSL 证书以允许远程访问
要允许远程访问,我们必须使用 SSL 启动 Web 框架。 我们需要先创建证书,然后才能执行此操作。 幸运的是,openssl
软件包已经安装。
我们可以使用以下命令创建用于生成证书的 RSA 密钥:
openssl genrsa -out server.key 2048
使用这个键,我们可以生成 .csr
文件:
openssl req -new -key server.key -out server.csr
最后,我们可以使用这两个部分来创建 SSL 证书:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
现在,您的 web2py 目录中应该有一个 server.key
、server.csr
和 server.crt
文件。 我们可以通过在调用 web2py 时将一些参数传递给 web2py 来使用它们以安全的方式启动接口:
Python web2py.py -a ' admin_password ' -c server.crt -k server.key -i 0.0.0.0 -p 8000
您可以选择要用于登录框架 Web 界面的任何密码。 “0.0.0.0”允许远程系统访问它。
您可以访问该界面:
https:// your_ip :8000
您应该会收到一条警告,指出 SSL 证书未由已知的证书颁发机构签名。
这是正常的,因为我们签署了密钥本身。 单击允许您继续进行的按钮。
如何使用 Web 界面设计程序
访问该站点时,您应该看到默认的 web2py 应用程序:
如果您点击“管理界面”按钮,您可以使用您在启动服务器时选择的密码登录。
完成后,您应该进入管理界面:
在左侧,您可以看到三个文件夹。 这些实际上是包含的示例应用程序。 如果您单击文件夹标题,您将被带到实时应用程序。 一个是您现在使用的“管理”界面。 “欢迎”应用程序是您在登录之前看到的基本应用程序。
您可以在此界面中通过单击“管理”下拉菜单并选择“编辑”来编辑所有这些应用程序(管理员除外):
如果您这样做了,请单击顶部导航栏中的“站点”链接返回主界面。
让我们通过应用右侧的“新建简单应用”字段创建一个新应用。 我们将其命名为“sample_app”:
这将我们带到新的“sample_app”应用程序的编辑界面。 它列出了标准的 MVC(模型、视图和控制器)文件,以及语言目录、静态页面目录以及模块、插件和私有文件的目录。
这实际上只是文件系统中正在发生的事情的图形表示。 如果您使用 CTRL-C 停止 Web 服务器,并在 web2py 目录中导航到“applications/sample_app”文件夹,您将看到与这些类别匹配的文件夹。
如果我们通过以下方式访问该网站:
https:// your_ip :8000/sample_app
我们可以看到它看起来几乎与默认包含的欢迎应用程序一模一样(唯一的区别是标题)。
探索 Web2py 的 MVC 实现
Web2py 负责形成一个功能齐全的应用程序所需的许多细节。 但是,您必须知道它是如何交互的,才能在这个系统中有效地开发。 Web2py 实现了“按约定编码”的策略。
Coding-by-convention 是一种设计选择,旨在减少开发人员必须做出的决策数量。 这意味着开发人员只需要指定他们何时远离约定。
例如,如果应用程序的控制器名为“image_blog.py”并且它有一个名为“main”的函数,web2py 将尝试使用名为“image_blog/main.html”的视图来服务该页面。 如果控制器中没有指定其他扩展名,“.html”部分是默认的。 如果我们打破这个约定,我们将不得不指定替代方案。 否则,这是自动的。
我们可以看到有一个控制器叫做default.py
。 这是在未指定其他控制器时使用的默认控制器。 如果单击此控制器左侧的“编辑”按钮,您可以看到它定义的功能:
如果我们返回主编辑界面(通过单击顶部导航栏中的“编辑”链接),我们可以看到定义面向用户的操作的函数具有匹配的视图:
创建示例控制器和视图
让我们先创建自己的控制器来尝试一下。 在“控制器”部分下,单击“创建”以创建一个新控制器:
如果我们编辑这个文件,我们将看到它定义了一个“索引”函数,如果没有其他请求,它将被调用。 这是默认设置。 这个函数只返回一个字典,其中存储了一个名为 message
的变量,其值为“hello from hello.py”。
# coding: utf8 # try something like def index(): return dict(message="hello from hello.py")
您可以编辑它并单击磁盘图标以保存您的工作。 出于我们的目的,这正是我们想要它做的事情。
接下来,我们需要创建相应的视图来呈现正在传回的信息(定义消息的字典)。 单击“编辑”按钮或“<
在“视图”部分下创建一个新视图。 我们需要匹配控制器和函数才能自动应用此视图:
通过单击文件左侧的按钮来编辑文件。 您应该会看到默认视图,其中包含以下内容:
{{extend 'layout.html'}} <h1>This is the hello/index.html template</h1> {{=BEAUTIFY(response._vars)}}
此文件扩展或构建 layout.html
视图。 这是在所有页面之间保持一致外观的有用方法。 如果我们在浏览器中访问该页面,我们可以看到它是如何呈现的。
我们可以访问这个页面:
https:// your_ip :8000/sample_app/hello
您可以看到它在标题下方的字典中呈现了结果。 我们可以通过编辑视图直接打印它。
如果我们删除后两行,我们可以用我们的消息文本替换它们,因为它形成了我们想要显示的完整消息:
{{extend 'layout.html'}} <h1>{{=message}}</h1>
现在,我们应该只看到控制器传递的消息,呈现为 h1 标头:
如果我们想摆脱样式,我们可以删除顶行。
模板:=message
是我们可以在文件中嵌入 Python 代码的一种方式。 这使我们能够动态生成在编写程序时不一定可用的内容。
结论
您现在应该对 web2py 框架有一个非常基本的了解。 更重要的是,您应该能够看到在这个框架上进行开发是多么容易。 能够通过文本文件或通过 Web 界面进行开发的灵活性意味着您可以在不同的环境中很好地工作。
Web 界面还附带了大量工具,可用于处理不断增长的应用程序。 您可以在引入错误时查看堆栈跟踪,可以轻松打包应用程序以进行部署,并查看应用程序在开发过程中遇到的所有错误的日志。
Web2py 集框架、IDE 和开发套件于一体。