我如何使用烧瓶将我的CLI脚本到网站上
#python #api #flask #hosting

Osman RanaUnsplash上的封面照片。

语境

所以,我正在建立我的首发投资组合。我想展示我的初学者Python技能,但我只有一个Twitter机器人和一些CLI脚本。
在我的投资组合中,我展示了我的源代码,但我想要实时预览。有人可以看到现场直播的东西。

我如何显示我的CLI脚本的实时预览?

答案:使它们进入网站!

这是我进入烧瓶和render.com的开始。

CLI脚本

曾经有一个script,它打印了您想要的位置的天气。 (以Wellerman Ahah的语气!)

所以,我有一个脚本,我想让它活着。我在脑海中搜索,我想到了烧瓶,是的!

开始烧瓶旅程

什么是烧瓶?

首先,烧瓶到底是什么?好吧,就像Django(也许您更了解)一样,它是用Python编写的网络框架。但它比兄弟小,也为较小的项目建造。虽然...§

安装烧瓶

安装烧瓶非常简单,只是一些pip命令。这是:

pip install flask

虚拟环境

这不是强制性的,但它是一个很好的习惯:为每个项目创建虚拟环境。因此,您不会将依赖项从项目到另一个项目的依赖项混乱,您可以在单个系统上维护多个Python版本。

$ mkdir weather
$ cd weather
$ virtualenv -p python3 venv

激活环境

创建了环境后,就必须激活它(如果需要的话,“在其中输入”)。您这样做(假设您在weather目录中):

source venv/bin/activate

CLI脚本到烧瓶应用

我阅读了doc,我知道我的网站看起来像这样:

from flask import Flask, render_template, request
# To import Flask itself, to make it beautiful and 
# to interact with forms


app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
# To interact with forms and their methods

def index():
    return "<p>Hello, World!</p>"


if __name__ == '__main__':
    app.run()

我认为我的CLI脚本会进入功能主页,我是对的。我了解了有关渲染模板的更多信息,因此我的return语句看起来像:

return render_template('index.html', city_name=city_name, days=days, daily=daily)

我使用POSTGET方法将我的表格的使用分开。

最终代码

您可以在这里找到我的最终app.py文件:gitlab.com

开始渲染旅程

我的代码在本地计算机上完美运行。我搜索了如何在互联网上托管它。 Duckduckgo(我的朋友)首先向我展示了Heroku。但是,也许您已经知道了,它不再免费...所以我再次搜索, bim ,render.com

先决条件

首先,我知道您是一个很好的开发人员,并且您已经在Gitlab或Github上拥有代码,对吗?否则,创建一个存储库并提交您的代码。

其次,在render.com上创建一个免费帐户。

创建您的网络服务

首先,新 +按钮,然后选择 Web服务

Create a New Web Service

接下来,连接您的github存储库或gitlab存储库。

GitLab Connection

在下一个屏幕上,输入您的信息:

  1. 名称:即。 weather.boreux.dev
  2. 区域:选择最适合您的区域。对我来说,当我住在比利时时,我选择了Frankfurt (EU Central)
  3. 分支:您希望部署的存储库的分支,即。 main
  4. root Directory :我将其留为空,因为我要部署的根目录是我的存储库根目录
  5. 运行时Python 3
  6. 构建命令:输入pip install -r requirements.txt
  7. 开始命令:这是将启动我们的Web服务的命令,即。 gunicorn app:app
  8. (单击高级如果像我一样,您必须输入一些环境变量,例如API键)。

Informations about the Web Service

关于关键环境变量的一点注释。

我在api.openweathermap.org中找到的 api键输入我的KEY var。

在我的烧瓶应用中,我获得了我的API键:

import os


key = os.getenv('KEY')

部署到渲染

这是我的项目体系结构:

weather/
|_ .git/
|_ .gitignore
|_ static/
    |_ img/
        |_ covers/ # my background covers
|_ templates/
    |_ index.html
|_ app.py
|_ requirements.txt

要求。

pip freeze > requirements.txt

使用我的项目及其环境变量,我只需要在渲染上部署它即可。完成所有信息后,您可以通过单击页面底部的Create Web Service按钮来完成。

Create Web Service

这是结果

这是结果:

Miami Weather

您可以根据MIT许可找到此项目的代码,此处:gitlab.com/tt-bb