我们将构建一个 Python 网络应用程序,实际上我们也将它部署到 Heroku,

它是 Lexus 经销商的反馈应用程序

当然,你可以使用任何你想要的东西,它可以是一个完全不同的

表格,基本上它会告诉你如何拥有一个进入数据库的表格,

它会发送一封电子邮件,我们将使用邮件陷阱来做

什么 是一项很棒的开发服务,基本上它为您的应用程序提供了一个在

您出发之前发送电子邮件的地方,并实际创建您知道的电子邮件

客户端,因为您知道发送邮件或您可能在生产中使用的任何东西,所以

它是一个 gre 在开发服务中,您确实必须创建一个

帐户,但它是免费的,您只需将这些参数基本上插入

您的应用程序中,我们将这样做您还需要研究生我们

将使用 PostgreSQL 作为我们的数据库,所以您 只需要下载它,所以如果

你在 Windows 上点击这里 Linux 我在 Mac 上,所以我会去这里然后

下载安装程序并获取最新版本,一旦

你安装它,你就会有明信片 在您的系统上,您还将拥有

我在这里运行的 PG 管理员,这基本上只是一种管理您的数据库的方式,

所以我们稍后会讨论,但这是您

实际上想要做的两件事 3

如果你要部署它,你还想在 Heroku 创建一个帐户,你可以看到我有我的 Heroku

Postgres 数据库我从来没有在视频中向你们展示过

如何将 Python 应用程序部署到Heroku 视频的一部分将对

您和李有益 ke 我说过我们将使用 Flask 框架,

所以这几乎就是要介绍的内容所以只是为了向您展示它是

如何工作的,我们可以在这里输入一个名称让我们说 Jax

所以客户名称假设我们刚买了 Alexis 我们 处理过 我不认识

Karen Swanson,她做得很好,所以我们会给她 10 分,我们只会说

Karen 非常有帮助,然后一旦我们点击提交,它会立即将我们

带到感谢页面或 成功页面,但发生的事情是我们刚刚

提交的数据进入了 Postgres 数据库,在这种

情况下,我们将从本地开始,但是一旦我们部署,我们将创建一个

生产数据库,然后它还发送了一个 电子邮件到邮件陷阱,您可以

在此处看到 lexis 反馈,如果我点击我们收到反馈提交

并且客户处理我们的评级和评论,那么这个项目

将向您展示如何使用 Python 和烧瓶创建一个 Web 应用程序 将连接到

数据库提交 表单数据 任何你想要的数据,还可以

使用 SMTP 使用邮件陷阱通过 Python 发送电子邮件,显然你可以用

发送邮件或任何你想使用的东西来切换它,所以它会教你

很多东西以及如何部署到 Heroku我从来没有制作过视频,向

您展示如何部署 Python 应用程序,所以它应该很有趣,

我建议跟随,所以让我们开始吧,我将跳入 vyas

代码,我只有一个名为反馈应用程序的空文件夹和 我只是要

打开我的终端,所以如果你不

只是去 Python org 下载并安装它,请确保你已经安装了 Python 3,我们需要创建一个

虚拟环境,我们将使用Pippy 和 V 所以你想

用 pip 包管理器安装它,所以 pip install pip 和 VI

已经安装了,所以我不会运行它,但这将允许

我们创建一个虚拟环境,这样当我们为我们的应用程序安装包时

它们都将安装在虚拟环境

而不是全局系统上,因此要运行虚拟环境,我们只需

保存 pip E&V shell ok,您可以看到启动虚拟环境为您提供

了路径,然后它创建了这个 Pippyenv 文件 将我们所有的

包也存储为 Python 版本,你可以看到它是版本 3,所以如果我使用

Python- – 版本我的意思是我有三点

七零,我认为最新的是 374,但我应该没问题所以我 我只是

要清除它并退出虚拟环境,您可以

退出但我不会运行它,所以我想我现在要做的就是

安装我们需要的所有软件包,以便摆脱它

如果您有任何问题,您可以查看错误消息或其他方式,

但要安装我们使用 pipi 和V install 的软件包,让我们先安装flask

,这是我们的 Web 框架,您会看到它被添加到这里,就像

然后是 nodejs 的包 Jason 我们将进行pipi 和 V 安装,我们将需要

这个心理 PG,它是 PS YC o PG -这是一个数据库适配器,我们现在需要

它才能与 Postgres 一起工作,有时这至少在某些方面给了我

系统它给我带来了问题,所以我还要安装psycho PG

– 二进制以防万一,然后我们还想安装SQL alchemy

,它有点像一个抽象层来处理我们的数据库,

类似于Mongoose或 SQL 之眼或续集之眼,随便你怎么称呼它,

所以我们将进行 PIP E&V 安装,我们将其安装为烧瓶扩展,

所以烧瓶 – SQL 炼金术,它允许我们创建数据库模型和类似的东西

,然后让我们 看到现在的最后一件事是独角兽,所以 G

独角兽就像一个 HTTP 服务器,当我们部署到 Heroku 时我们需要它,我

认为现在应该是它,我将使用 vs 代码发送一些我要 执行

换档命令 P 或换档控制 P并且您只想 输入 Python,

然后选择解释器,并确保你有正确的解释器

,在我的情况下,这是正确的,在这里反馈好,所以要确保我们

选择好的,我们应该为包做好准备,至少现在

可能 会提示我们安装 PIlint,这是一个 linter,我稍后会处理

,但现在我们已经安装了所有东西,所以让我们创建一个名为 templates 的文件夹,

因为我要做的第一件事是创建我们的前端

,即我们的 UI 和模板 我们还将有一个名为 static 的文件夹,现在

static 只是它是一个静态文件夹,我们就像我们的 CSS 和图像和其他东西一样,

所以我将拖到我的徽标上,这就是这里,我的样式表

,你可以 从描述中的 github 存储库中获取非常

简单我们只是有一个重置我们有一些正文样式容器一些标题

消息徽标然后一些表单样式以使表单看起来不错如果

你想改变一些东西 f 或者样式,你当然可以

让我把音量调低,这样你就不会收到电子邮件通知,

所以这是静态的,现在模板是我们的 HTML 去我们模板的地方,所以我们

会说 index.html 我们是 也会有一个成功的点 HTML 那是

我们唯一需要的两个页面 index.html 让我们在这里创建一个样板,让我们说

请评价您的服务,让我们链接我们的样式表,它是上一级的

,静态和 style.css 好的,然后让我们在正文中看到我们将有一个

容器类,让我们的图像在顶部,这将是 dot dot

slash static slash logo.png 一个斜线和 alts 说 Lexus,然后给这个

类 logo

好吧 我们将拥有我们实际上将

在这里输出一条动态消息,如果他们忘记输入客户

名称或类似的东西,所以我现在只用一个 to 发表评论

把消息放在这里好吗,因为这些是 dyn ami 模板,然后

在它下面,我们将拥有我们的表单,动作将转到将使用烧瓶创建的路由斜杠

提交,让我们添加一个 post 方法,我们

希望这是一个 post 请求,然后呢 我要做的只是

一个接一个地粘贴到每个表单组或每个输入中,这样我们就有一个带有

表单组 h3 类的 div 作为标签,然后是一个输入,这是一个文本输入,确保

你有 name 属性 因为这就是我们实际上要

在后端获取数据的方式,好吧,这就是客户名称,我将获取下

一个是经销商,所以另一个 div具有表单组的类别,并

带有一些经销商的选择名称 选项然后我们将有评级,这

只是一些单选按钮,因此名称评级值 1 到 10 10 被选中

,然后让我们看看评论和提交按钮,这样我们就有了另一个 div

,其中包含关于您的表单组评论的类体验命名评论,

然后我们的 提交按钮就是这样,所以我要保存它和

我要粘贴的成功 HTML,因为这真的很简单,所以基本上我们

只有我们的徽标,然后是一个 h1 和一个h2 并检查这些我们可以

继续 我可以使用实时服务器打开,或者您可以打开 HTML 文件,

看看它看起来是否正确,让我们检查一下成功页面,

一切都很好,所以我们的前端或 UI 已经完成,这非常简单

,你们中的一些人 伙计们可能会说为什么不使用 react 或类似的东西,当

你有这样的应用程序时,它很简单

,使用 react 完全是浪费时间,除非你真的打算扩展它并且你需要一个

真正的交互式 UI,它只是一个在我看来,你不需要一个

前端框架来处理一切都好,所以让我们关闭这些,所以我们

应该做好我们的模板现在让我们

开始处理 Python,所以我要创建 一个应用点 PI 文件,

它将成为我们的 e 如果您熟悉 node 和 Express,则尝试点它

类似于应用程序 j/s 或索引 jas,在这里让我们引入烧瓶是烧瓶中的一些

东西,所以我们想导入烧瓶本身,我们想引入

一些东西 调用渲染模板,以便我们可以渲染我们的 HTML 文件,然后

请求处理请求参数和类似的东西,

然后我们需要初始化我们的应用程序,我们只需将其设置为flask,

然后我们传入双下划线名称双下划线和 让我们创建一个

路由,我们这样做的方式是我们在应用程序点路由上做一个装饰器,

这将用于主页,所以只需斜线,然后我们定义一个

名为 index 或任何你想要的方法或函数,然后我们’ re 只是要返回

渲染模板,然后传入index.html ,它将渲染该

模板,然后最后为了运行它,我们需要调用 app dot run 但我们

只想先执行此 if 语句,因此如果 name 等于 双下划线

ma n 所以只要确保这很重要,它实际上正在运行

,然后应用程序点运行,那应该允许我们运行我们的服务器

哦,我想做的另一件事就是将应用程序调试设置为 true 希望没有分号,

因为我们’ 重新开发,我们希望服务器继续重新加载和

类似的东西,所以在这里让我们运行 Python应用程序 dot pi,然后我们开始它

运行在 5000 上,让我们打开它,你可以看到它在 5000 上

运行,我们得到 我们的表单很好,所以它显示了

我想做的下一件事是处理提交或开始处理提交,所以

我们的索引页面有一个表单,它发出一个发布请求以斜线提交,所以我们

需要在我们的后端处理它所以让我们做应用程序点写,我们想要

斜杠提交,这就是我们要提交的内容,因为这是一个发布

请求,我们实际上必须分配方法和

我们想要发布的允许方法数组,然后让我们说函数或定义提交现在好了 我

想确保它是一个 post请求,所以我将在这里做一个 if 语句

,我们可以获取该请求对象,它有一个名为 method 的属性

,它将为我们提供我们想要确保它是 post 调用的方法

然后让我们获取表单数据的数据并将它们放入变量中,这样

我们会说客户等于,我们可以请求点形式,然后是括号以及

该字段的任何名称,所以在这种情况下,我们希望在此处获取该字段

有客户的名字,所以我们想在这里使用客户,好吧,

我相信我们有四个字段,我们想要哎呀,下一个经销商是什么

,然后这个是评级好的,然后我们想要这个是

评论好的,这样 现在应该从表单中获取数据我只想

打印出这些数据所以让我们打印出客户经销商评级评论然后

这是我们想要返回的我只是要渲染模板并让我们

渲染成功页面所以一旦我们 提出我们的要求 我们

提交表单,我们应该获取它应该在控制台中打印的数据,然后

如果一切正常,我们应该呈现成功页面,所以假设 John

Doe 经销商会做十个,我们只会说测试提交,所以它重定向我们很好

让我们检查一下控制台,我们得到 John DoeTom Smith 10 并测试正常,所以我们知道

我们正在获取该表单数据并将其注释掉,所以接下来我要做的是

确保用户输入客户和经销商,所以就这样做 一些

简单的验证,所以我们会说如果客户等于没有或经销商

等于没有然后让我们继续并返回渲染模板,除了我们

想要返回 index.html 这是主页但我们想发送一条

消息好的 使用模板我们可以发送数据,所以假设现在请输入

必填字段

替换这个我首先想 检查以

确保消息存在所以让我们做如果消息我们使用这些百分号花

括号,如果可以,我们想要在这个中,然后在这里我将

用消息类做一个段落,我们使用我们的双花括号语法

类似 你会在视图或角度中做什么,然后让我们输入我们的

消息,我们可以要求添加这些竖线字符,然后我将把它放在安全位置

,这对我们的输出来说是一点点安全,所以让我们保存它,

让我们试试 退出验证,所以如果我清除它,清除它,

我们开始吧,请输入必填字段,好的,现在我们已经完成了,我想

我们已经准备好开始实施数据库了,所以让我们关闭它,

让我们 回到我们的应用程序派,我们需要引入 SQL alchemy 好的 SQL 来了——

现在我们需要定义我们的数据库 URI或数据库位置,所以我将

进入 PG 管理员,当你在本地安装 post-grad 时 ‘ll get this

over here you can see database is one我要去 nna创建一个新的数据库我只是

将其命名为雷克萨斯,我将使用我的研究生用户并保存它应该

在那里创建一个新的数据库所以现在你可以看到我在这里有雷克萨斯数据库

如果我看 在模式和表中,我们没有任何表,但我们将

稍微添加一下,这样我们就有了数据库,现在让我们回到我们的应用程序,

当我们部署到 Heroku 时,我们将拥有一个完全不同的数据库,所以

你 然后可以将其切换,但我将有一个名为 n 的

环境变量并将其设置为 dev 然后我们会说

如果环境等于 dev 那么我们将拥有我们的数据库然后我们将

拥有 生产数据库现在如果我们处于生产模式的开发模式,我想很好地改变的另一件事

是这里的应用程序调试,所以我

要从那里拿走它并将它设置为开发模式,如果我们将它设置为 true

‘等一下,不,这是错误的,在开发模式下将其设置为true,否则

将其设置为false 好的,然后在这里我们将放置我们的开发数据库

,我们这样做的方式是应用程序配置,

如果您想检查它,但我们想做配置,那么这里的关键

是 SQL alchemy underscore 数据库下划线 URI 好的,我们要

设置为 PostgreSQL,然后是我的用户名,我使用的是 root

研究生用户冒号,然后是我的密码,

在 localhost / 中只有 1 到 6,然后是你的我的数据库名称是 lexis 好的

,在这里我们将拥有我们的生产数据库,实际上我将抓住它

,现在我将它设置为空,它稍后会处理它

,然后有一个app.config 我们要添加的值,或者我们将

在控制台中收到警告,这是 SQL alchemy 下划线

修改,我们希望将其设置为false 好的,或者我们将收到

警告,以便现在我们需要连接我们创建一个数据库对象,所以

我们这样做的方式就在这里,我们要说 DB,我们将把

它设置为 SQL alchemy,然后传入我们的应用程序,这样我们现在就可以使用它来查询

我们的数据库,就像 SQLalchemy 的工作方式一样 我们创建的模型

类似于您对Mongoose 或续集眼睛所做的事情,所以我将在

这里创建一个模型,我们以课程的形式进行此

操作,您可以随意称呼它,我将其称为反馈和 这将扩展

DB 模型,在这里我们可以定义一个作为反馈的表名

,然后我们要定义我们的字段,所以我们将有一个 ID,我们可以使用

该 DB 变量,我们将 说 DB列,它将是一个整数,

所以 DB 整数,所以我们可以使用不同的类型,这也将

是主键,所以我们将其设置为 true 好的,下一个将

是客户 所以 DB 点列,这将是一个字符串,所以

我要做 DB 点字符串,比如说 200限制和 我想让这个唯一,所以

我们会说唯一等于真的,然后我们还有几个

让我们看看我们实际上可以摆脱这个,所以下一个将

成为经销商,也将是一个字符串,所以我会 留下那个然后打电话给这个

经销商然后我们有评级所以评级将是一个整数我们可以摆脱

这样的唯一和DB点整数然后最后一个将

成为评论评论将成为文本 字段就像一个更长的字段,

我们不需要把它放进去,我们不希望这样可以,所以这

就是我们想要的字段,所以我们的类或我们的模型也需要一个构造函数,或者我

猜是一个初始化程序,所以我们 ‘要定义双下划线和

NIT 想要哪些是客户

除 ID dea 以外的所有字段 ler 评级和评论,然后我们只想

将 self dot customer 设置为通过 oops 没有分号的客户,并

为其他经销商做同样的事情

,这将是这个评级,这将是评论好,

就是这样 我们的模型我要保存它,我只是在保存时设置了格式,

这就是为什么我在保存时看到它有点改变,所以

这就是我们的模型,现在我们应该能够在任何我们想要的地方对我们的数据库进行查询

所以让我们回到提交,所以现在我们只是

重定向到成功,我们没有对数据库做任何事情,但

在我们这样做之前,我们实际上必须创建反馈表,我们

实际上可以 可以根据我们的模型创建它,所以我将

使用 ctrl C 停止服务器一秒钟,然后我将进入 Python,所以

我将输入 Python,然后从这里输入 dB 我要从

应用程序中说,所以从我们的应用程序文件中,让我们 importDB 然后我们可以说 DB dot 创建

了所有下划线和一些括号,这应该查看我们的模型 查看

我们的数据库并从中创建表反馈表 好的反馈

表包含所有这些字段,所以现在我们可以退出这个 我们可以再次运行我们的

服务器,现在我们实际上可以通过 PG 管理员检查这一点,所以我只是

让我们看看让我们在 Lexus 数据库中刷新我们的模式并转到

表,那里有反馈,所以如果我们查看反馈,我们看看 在列

有一个 ID 客户经销商评级意见 好的 所以我们现在有我们的

数据库 我们有我们的表 我们有我们的应用程序连接到我们的数据库所以现在我们

希望能够进行查询和东西所以在提交中让我们直接

在我们的上面 渲染成功,

让我们先检查以确保客户不存在,因为

我们不希望同一个客户能够提交多个反馈,

所以我们可以做到这一点的方式是使用if 现在声明,当我们处理

数据库时,我们使用 DB,然后使用点会话,好的,现在我想做一个查询,所以我

要做会话点查询,我们需要传入我们的模型,这是反馈,

然后我们可以过滤和我 想要做的是在一个过滤器上说反馈,其中

反馈点客户等于客户变量,这

是数据进来的地方,我想计算那个点数,如果它

等于零,这意味着那个客户 不存在只是关闭

好吧,这意味着客户不存在,现在我

想基本上将数据添加到数据库中,所以我们这样做的方式

首先是创建一个变量,称为数据,我们需要 将其设置为我们的

模型,即反馈,您显然可以拥有多个模型,并且在

反馈中我将拥有我将放入我们的客户经销商,所以这基本上

是我们要提交评级评论的表单数据,好吧,所以我们 现在有数据

我们需要数据库点 session dot add 并且我们现在要添加该数据,

现在还不会将其放入数据库中,我们需要提交它,所以我们需要像现在这样执行 DB

dot session dot commit如果如果一切顺利,那么我们想要

返回成功,所以我们想将它缩进一个,

是的,很好缩进那个,因为一旦添加它,我们现在想要重定向到

成功,如果这是错误的,我们想基本上重新渲染索引,所以我

将复制它放在上面如果可以,则与此相同的级别,因为如果

这不是真的,则基本上这将运行如果这是真的,那么

所有这些东西都会运行

保存

它,让我们交叉手指尝试一下,所以我会回到

5,000 假设 John Doe 经销商汤姆史密斯会给他 10 会说

汤姆非常有帮助,好吧,所以我们被重定向所以希望它进入

数据库让我们去 PG admin 和 让我们去我们的反馈表,让我们

刷新,现在如果我们去列而不是列反馈,我们选择

查看编辑数据所有行,它是ID 1,所以它会自动

递增主键 John Doe 是客户Tom 史密斯给十分,然后评论

好了,所以我们已经成功地将数据添加到数据库中,所以接下来我

要做的是实现电子邮件,好吧,我们不希望数据只进入数据库,

我们也想发送电子邮件 所以我们将为此使用邮件陷阱所以你

想去邮件陷阱我欠创建一个帐户你应该看到这样的东西

你将有一个特定的用户名和密码不要使用我的使用你自己的,

我们’ 重新创建一个新文件来处理电子邮件,所以我将创建

一个名为 send underscore mail dot pie 的文件,

好吧,所以在这个电子邮件脚本中,我们将引入一些

东西,所以一个是 SM TP 库 smtplib,我们还将从

电子邮件点 mime 中说 dot txt 我们要导入mime 文本,这将允许我们发送

文本和 HTML 电子邮件,让我们创建一个名为发送下划线邮件的函数

,它将接收我们想要通过电子邮件发送的数据,即

客户或交易或在评论中评分 好的 现在

我们需要在这里设置一些东西 所以端口将是 2 5 2 5 现在这

取决于您用于发送电子邮件的服务 这与邮件

陷阱有关所以我们要发送 SMTP下划线服务器是

smtp.mail.yahoo.com 三,我会说新的反馈

提交 h3 然后让我们做一个 ul 你可以设置这个样式或者你知道你可以

在这里创建任何你想要的我只是在做一个无序列表 所以 – Li 在

这里让我们做客户:因为我们使用 F 字符串,所以我们可以

像这样简单地放入变量,这就像 JavaScript 中的模板文字一样

,它只会复制这个 Li并将其粘贴 2 3 4 次

第二个是dealer taylor,这将是b e 评级 这将是

评级好,评论评论好,所以这就是消息,现在我们必须在

这里定义更多变量,所以发件人电子邮件将是我将

在 example.com 上使用电子邮件,显然你会使用你的 你知道

你的真实域名,然后接收者让我们做接收者电子邮件,我只是

将它设置为电子邮件 – 在example.com 好的,然后我们需要

创建这个 MSG 或者你可以使用我将要使用的任何 msg 然后

我们要将其设置为等于 mime 文本并传入我们

在上面创建的实际消息,然后是我们想要的电子邮件类型,这将是 HTML 好的,

你可以有文本或 HTML,然后我们需要创建消息主题

这将被设置为让我们将其设置为雷克萨斯反馈,我们想做

味精,我们需要设置发件人,这将是发送我们的电子邮件

,然后是味精,这将是接收者的电子邮件,好吧,然后 我们想

最终发送电子邮件,我们通过这样做 w 我的 SMTP Lib 点 SMTP 并且我们

需要传入我们上面定义的 SMTP 服务器以及我们在上面定义的

端口 server然后让我们获取该服务器对象并

调用 login 并传入我们的登录名和密码然后获取 服务器和调用

发送邮件,我们通过我们的发送我们的电子邮件我们接收我们的电子邮件,然后

我们将这个味精点作为下划线字符串,

它会保存它现在这将根据您使用的服务而有所不同

如果 您正在使用 Gmail 或发送邮件,这显然会有点

不同,您知道我们正在使用邮件陷阱,因此我们需要这些特定的

登录名和密码以及其他东西,但我相信这就是我们所需要的,因此请

确保将其保存,然后我们 ‘将进入一个函数,所以我们会说

from send mail import send man然后我们只需要调用它,

所以我们会在我的意思是你想调用它的时候由你决定

想在它进入数据库后这样做

我们在重定向之前的提交之后立即提交是我要调用它的地方,所以发送给我,我会记住

它包含数据,客户,经销商,评级和评论还可以

,希望现在我提交时应该这样做 它不仅应该

进入数据库,还应该发送一封电子邮件到邮件陷阱

,我只是想告诉你如果我再次尝试做 John Doe 它不应该让我

因为我已经做过他所以如果我提交你有 已经提交了反馈,所以

让我们做其他人会做凯文史密斯并且会说他正在和

他的表弟打交道汤姆史密斯给他一个五只是因为他有一些

问题汤姆非常咄咄逼人并且提交好了所以我们被重定向了让我们

检查一下 数据库,所以我们已经从反馈中选择了所有内容让我们运行这个

,这里有 Kevin Smith,然后如果我们去邮件陷阱,我们会在这里收到一条消息

Lexus 反馈,如果我们检查出来,我们会得到 Kevin Smith,因为客户 Tom

Smith 是经销商 五级汤姆很好,所以我们现在正在

发送一封电子邮件并将其放入数据库,当然,您可以将

其应用于许多不同的情况,许多不同的应用程序,

所以希望这可以帮助你们,所以我认为我们只是

即将准备好部署,所以我们必须经过一系列步骤

才能立即执行此操作我要在这里停止我的开发服务器

,你需要一个 Heroku 帐户去 Heroku comm

创建一个帐户,你会看到一个带有所有应用程序的屏幕,

如果你刚刚创建了一个帐户,那么显然你不会有任何应用程序,然后你需要

Heroku CLI,所以假设 Roku CLI 和你们中的一些人 可能已经安装了这个

但是很容易安装 MacOS 你可以下载安装程序 你

可以使用自制程序 windows 你有一个安装程序然后 Linux 你有一些

适用于不同发行版的方法所以我已经安装了它

,我们这样做的方式是 用 git 很明显你也需要安装现在我

要首先创建一个文件我要创建我的点获取忽略文件

基本上我想在这里放的是我的点实际上我没有点你

可能会 如果您使用 pilant,则有一个 dot vs code 文件夹,所以我将把它放在

那里,然后创建双下划线 PI缓存,

您不想这样做,所以我认为这就是全部 我们需要在

那里,然后让我们用 git init 初始化一个 git 存储库,然后

我们实际上我现在只是初始化它,所以我们要创建一个 Heroku

应用程序,所以如果你安装了 CLI,你应该能够 执行 Heroku dash dash

版本,它会显示您的版本

回去你可以看到我已经

用这封电子邮件登录了,所以现在我们想通过 sa 创建一个 Heroku 应用程序

应 Heroku 创建,然后我们可以将其命名为 Lexus

反馈,它必须是唯一的,因此您将无法使用该名称,

如果您不输入名称,他们只会创建 给你一些奇怪的名字,但现在

我们有这个 URL 现在应用程序还没有部署但

我们只是有我们基本上已经创建了它所以如果我们回到我的仪表板

或者你回到你的仪表板然后重新加载你会 在我们尝试部署之前,请查看此雷克萨斯反馈或

您现在所说的任何内容,我们需要创建一个数据库,

现在一个 postgrads 作为 Heroku 的附加组件提供,你得到它你得到它我

想你得到一个带有免费帐户的免费数据库 当然,如果您正在

生产,那么您肯定想升级您的 Heroku,但让我们回到

这里,让我们创建一个数据库插件,以便我们可以做 Heroku 插件:我们

想要先创建然后 Heroku- PostgreSQL 和 then : 现在这

基本上就像一个开发数据库或爱好数据库,所以我们 想做爱好

-开发–应用程序,我们想告诉它我们希望它使用哪个应用程序,

因为您可以在 Heroku 上拥有多个应用程序,所以我想使用 Lexus

反馈,好吧,让我们尝试运行看看 发生了什么,

所以创建了一个空数据库,只是说,所以在我们的应用程序中创建了这个作为数据库 URL 现在

我们有我们的开发数据库的 uri,但是我们没有一个

用于我们的生产的方式,我们可以简单地通过做让我们 弄清楚这

一点,让我们做 Heroku,我可能会说,

也许我会用所有这些命令创建一个要点,这样你们就不会太

困惑,并且必须让你们知道暂停让我们做 Heroku 配置 – – 应用程序

,然后 应用程序的名称

,它为我们提供了这个数据库 URL,所以我们想抓住那个好,这只是一个

很长的时间,你知道有一个用户名和密码,我们想把它放在这里

用于生产哎呀,我复制了那个

就在那里 我们没问题,这是我们的生产数据库,现在我要走了

提前并将环境切换到 prod以便现在生效

而不是 this 并保存我认为这就是我们在这里要做的所有事情所以是的,

这些东西都将是相同的所有邮件现在记住我们创建时

创建的内容 该表是我们本地数据库中的反馈表

,我们需要在远程数据库上执行该操作,因此

尽管我们实际上可以执行 Heroku 运行Python,但实际上抱歉,我们

不想这样做,但我要 ‘要退出这个,因为我们没有退出

,我不打算这样做的原因是因为我们需要从

我们的应用程序文件中导入数据库,但我们还没有上传我们的应用程序文件所以 我们还不会这样做

,让我们看看,我会创建一个包含所有

步骤的要点,我们要做的一件事是创建一个需求文件,

其中包含所有此应用程序所需的软件包

以及我们使用 pip freez 创建的方式 e 然后是一个

更大的符号,然后是

要求,现在你可以看到它创建了这个要求文件实际上

应该是要求txt 让我们重命名那个点 txt 好吧,

这样你就知道所有的东西是我最喜欢的一些额外的东西

环境也是如此,但现在我们已经完成了,让我们看看接下来

要做的事情是创建一个名为 proc 文件的东西,因为它必须知道

Heroku 这是一个它是一个它是一个 sass基本上我们将一个平台作为服务传递给

它 需要知道如何运行应用程序,所以我们将继续

,只需触摸它只会创建一个文件,然后是大写 P

proc 文件的 proc 文件,没有扩展名,您甚至可以在此处和此 proc 中看到这有一个 Heroku 小图标

文件,我们会说网络冒号,我们正在使用独角兽,好吧,

记得我们在开始时安装它,然后是应用程序,然后

我们要运行的文件是我们的应用程序文件,所以应该运行它,所以我们会保存它

我们需要创建的另一个文件 是runtime dot txt,我们基本上需要

告诉它要使用什么版本的python,所以让我们创建一个名为run time dot txt的文件

,我们只需要说python – 然后

我相信三点七点二,你可以看看这让我们看看

Heroku 不是 python Heroku 运行时 dot txt应该是一个停靠文档文件

,是的,所以 python

372 之后我们需要做的就是这个需求点文本,所以你

知道我要做的就是删除我的需求文本 然后再次运行它

,除了这次我们想做 dottxt 好的,所以现在我们有了,你

只想确保在我们尝试部署之前拥有所有这些文件,所以

现在我们要做的就是将所有内容添加到我们的git 存储库中,所以 我们会说get at all

just do it in a line so get a doll toour staging area and get commit dash M

and for comment will just say initialdeploy ok 所以现在一切都在

本地存储库中,所以现在我们需要推送它 到 Heroku 但为了做到 在

我们需要添加我们的远程存储库,所以如果我们在仪表板中转到我们的应用程序,

让我们向 Alexis 反馈,然后我们去部署,你会看到一个

像这样的命令 Heroku get remote 所以我们只想抓住它,然后继续

把它粘贴进去,现在它被添加为我们的远程存储库,现在我们可以

通过 get push 到 Heroku和 master 分支来推送它,希望它

可以工作

,你可以看到它正在安装 Python370 来安装 pip

所以 Heroku 是我认为很棒 因为

当您使用 digitalocean 之类的东西时,我们不必自己在远程生产服务器上做所有这些事情,

或者您知道我不知道 ‘la note 或

vulture 您必须在您知道的服务器上做所有这些事情设置

你知道引擎行为和jewnicorn,这只是一个痛苦 Heroku 使

这些东西变得更容易它还安装了sqlite3 我们没有使用它,但它确实

安装了它 ok proc 文件声明到目前为止很好它会看起来 在我们的

pipi nvy 文件就像你要部署一个节点应用程序一样,它会查看你的

包点 Jason,它会安装你所有的依赖项,所以

看起来一切正常,所以现在我们可以打开 Heroku,它只会打开

URL ok 现在这可能行不通,因为我们还没有

创建数据库表,但我们只是试一试,所以如果我说 John Doe

测试,我们很可能会得到一些内部错误,是的,好吧,所以它可能

已经发送了电子邮件,但我不确定我是否会 – 不,它没有让我们

在这里删除这封旧电子邮件,好吧,所以这不起作用的原因是因为

我们没有创建表,所以现在让我们 回到这里的终端,

做我们在 Heroku 运行 Python 之前所做的事情好的,现在我们已经部署了我们的文件,

所以我们在服务器上有了那个 app dot PI 文件,所以我们现在可以从 app

import DB 然后 DB dot 做 创建下划线一切

正常然后退出现在我实际上可以登录到我的数据库我的远程

数据库 这里也是如此,如果我执行karoku PG : p SQL – – app 然后我的

名字是 Lexus 反馈我实际上已经登录到我的远程数据库

,我可以从反馈中选择全部,你可以看到我有 0 行

现在让我们再试一次,让我们重新加载,假设 John Doe Karen

Swanson 会给她一个 10 凯伦很棒并提交,我们被重定向

现在我要回到我的 oops 并回到我的 vs 联合终端和 运行

select all from feedback 就在那里,所以我们现在在我们的服务器上的数据库中拥有该数据

,我们应该收到电子邮件,让我们检查一下,我们将去

邮件陷阱那里是John Doe Karen Swanson,所以我们现在 有一个

完全部署到 Heroku 的应用程序一个 Python应用程序一个使用数据库的烧瓶应用程序

所以希望你在这个小教程中学到很多东西你

知道如何提交数据如何部署它如何发送电子邮件我的意思是这是一个非常

简单的 小应用程序,但您可以从这个应用程序构建很多东西

我可能会建议的事情,并且我总是建议您在

观看教程或课程

时扩展教程 关于如何做到这一点的基础你

知道我们在这里所做的还有我有一个烧瓶系列我向你展示

如何使用身份验证或实施身份验证所以我

认为将该系列与这个视频结合起来我认为你可以

这样做,那对你们来说将是一个非常好的挑战,但

希望你们再次喜欢这个我将在

描述中获得代码我还将尝试创建一个你可以遵循的小要点

命令和东西都很好谢谢观看如果你喜欢这个

请留下一个喜欢我很感激如果你有兴趣在社交媒体上关注我

就是这样感谢观看

Rate this post

Leave a Reply