本地部署Python?Flask并搭建web問答應(yīng)用程序框架實現(xiàn)遠程訪問的操作方法
使用Python Flask搭建web問答應(yīng)用程序框架,并發(fā)布到公網(wǎng)上訪問
前言
Flask是一個Python編寫的Web微框架,讓我們可以使用Python語言快速實現(xiàn)一個網(wǎng)站或Web服務(wù),本期教程我們使用Python Flask搭建一個web問答應(yīng)用程序框架,并結(jié)合cpolar內(nèi)網(wǎng)穿透工具將我們的應(yīng)用程序發(fā)布到公共網(wǎng)絡(luò)上,實現(xiàn)可多人遠程進入到該web應(yīng)用程序訪問。
在操作上我們將使用HTML來創(chuàng)建網(wǎng)頁的結(jié)構(gòu),然后使用css設(shè)計這個結(jié)構(gòu)并且使其看起來更漂亮,此外還會利用Javascript與頁面上的不同元素進行交互,最后使用python與web服務(wù)器(也成為后端)進行連接。
1. 安裝部署Flask并制作SayHello問答界面
本篇文章代碼使用 Python3 運行
安裝環(huán)境:需要在電腦上安裝 Python3 和 pip3。建議安裝最新版本
檢查是否有安裝了pip的可用Python,查看Python和pip版本:
C:> py --version Python 3.N.N C:> py -m pip --version pip X.Y.Z from ... (python 3.N.N)
使用pip安裝和更新:
$ pip install -U Flask
創(chuàng)建環(huán)境:
conda create -n SAYHELLO python=3.10
激活環(huán)境:
conda activate SAYHELLO
創(chuàng)建項目目錄:
mkdir SAYHELLO
進入到創(chuàng)建的目錄:
cd SAYHELLO
在當前目錄啟動VS Code:
code .
在SAYHELLO文件夾下新建兩個附加文件夾,一個名為templates儲存html文件的位置,
另一個名為static文件夾,下面新建一個名為css的文件夾。
在css文件夾下新建一個名為main.css的文件,
body {
text-align: center;
background-color: SlateGrey;
}
p {
color: white;
font-family: Shanti;
font-size: 1.2em;
display: inline-block;
margin: 20px;
}
img {
margin: 60px 0 30px 0;
width: 250px;
}
input {
width: 300px;
margin: 20px 20px;
height: 50px;
border: none;
border-radius: 10px;
font-family: Shanti;
font-size: 1.3em;
text-align: center;
}
input:focus {
outline: none;
border: solid 5px #00FFCE;
}
#greet {
background-color: PaleVioletRed;
border: none;
width: 200px;
color: white;
}
#greet:hover {
background-color: MediumVioletRed;
}在templates文件夾里新建一個名為index.html的文件,
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Say Hello</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
</head>
<body>
<img src="https://images.cpolar.com/img/202311271456089.png">
<br>
<form action="greet" method="post">
{% for message in get_flashed_messages() %}
<p>{{ message }}</p>
{% endfor %}
<br>
<input type="text" name="name_input">
<br>
<input type="submit" value="GREET" id="greet">
</form>
</body>
</html>在SAYHELLO文件下新建一個名為Procfile的文件,
web: gunicorn app:app
在SAYHELLO文件下新建一個名為app.py的文件,
from flask import Flask, render_template, request, flash
app = Flask(__name__)
app.secret_key = "manbearpig_MUDMAN888"
@app.route("/")
def index():
flash("what's your name?")
return render_template("index.html")
@app.route("/greet", methods=['POST', 'GET'])
def greeter():
flash("Hi " + str(request.form['name_input']) + ", great to see you!")
return render_template("index.html")在SAYHELLO文件下新建一個名為requirements.txt的文件,
certifi==2021.5.30 click==7.1.2 Flask==1.1.2 gunicorn==20.0.4 itsdangerous==1.1.0 Jinja2==2.11.2 MarkupSafe==2.0.1 Werkzeug==1.0.1 wincertstore==0.2
在TERMINAL里啟動Flask
flask run

打開一個新的瀏覽器,輸入http://127.0.0.1:5000,進入到剛才制作的SAY Hello的打招呼界面。
可以看到剛才創(chuàng)建的問題回答:what’s your name?

點擊GREET后,彈出:HI wang,greet to see you!

這樣我們使用Flask搭建的一個基本的帶有問答形式的界面就搭建完成了,接下來我們要把這個問答界面發(fā)布到公網(wǎng),分享給別人并且在web進行前端與后端的互動。
2. 安裝Cpolar內(nèi)網(wǎng)穿透
上面在本地成功部署了Flask,并局域網(wǎng)訪問成功,下面我們安裝Cpolar內(nèi)網(wǎng)穿透工具,通過cpolar 轉(zhuǎn)發(fā)本地端口映射的http公網(wǎng)地址,我們可以很容易實現(xiàn)遠程訪問,而無需自己注冊域名購買云服務(wù)器.下面是安裝步驟:
cpolar官網(wǎng)地址: https://www.cpolar.com
使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
向系統(tǒng)添加服務(wù)
sudo systemctl enable cpolar
啟動cpolar服務(wù)
sudo systemctl start cpolar
cpolar安裝成功后,在外部瀏覽器上訪問9200端口 即:【http://局域網(wǎng)ip:9200】,使用cpolar賬號登錄(如沒有賬號,可以點擊下面免費注冊),登錄后即可看到cpolar web 配置界面,結(jié)下來在web 管理界面配置即可

3. 配置Flask的問答界面公網(wǎng)訪問地址
點擊左側(cè)儀表盤的隧道管理——創(chuàng)建隧道,創(chuàng)建一個Flask的cpolar公網(wǎng)地址隧道:
- 隧道名稱:可自定義命名,注意不要與已有的隧道名稱重復(fù)
- 協(xié)議:選擇http
- 本地地址:5000 (局域網(wǎng)訪問的端口)
- 域名類型:免費選擇隨機域名
- 地區(qū):選擇China Top
- 點擊
創(chuàng)建

隧道創(chuàng)建成功后,點擊左側(cè)的狀態(tài)——在線隧道列表,查看所生成的公網(wǎng)訪問地址,有兩種訪問方式,一種是http 和https

4. 公網(wǎng)遠程訪問Flask的問答界面
使用上面的cpolar https公網(wǎng)地址在任意設(shè)備的瀏覽器訪問,即可成功看到Flask的web界面,這樣一個公網(wǎng)地址且可以遠程訪問就創(chuàng)建好了,無需自己購買云服務(wù)器,即可發(fā)布到公網(wǎng)訪問。

由于以上使用cpolar所創(chuàng)建的隧道使用的是隨機公網(wǎng)地址,24小時內(nèi)會隨機變化,不利于長期遠程訪問。
我一般會使用固定二級子域名,因為我希望將網(wǎng)址發(fā)送給別人進行問卷調(diào)查時候,就可以直接使用固定的公網(wǎng)地址進行填寫了。它是一個固定、易記的公網(wǎng)地址(例如:SayHello.cpolar.cn)因此我們可以為其配置二級子域名,該地址為固定地址,不會隨機變化【ps:cpolar.cn已備案】
注意需要將cpolar套餐升級至基礎(chǔ)套餐或以上,且每個套餐對應(yīng)的帶寬不一樣?!綾polar.cn已備案】
登錄cpolar官網(wǎng),點擊左側(cè)的預(yù)留,選擇保留二級子域名,設(shè)置一個二級子域名名稱,點擊保留,保留成功后復(fù)制保留的二級子域名名稱。

保留成功后復(fù)制保留成功的二級子域名的名稱

返回登錄cpolar web UI管理界面,點擊左側(cè)儀表盤的隧道管理——隧道列表,找到所要配置的隧道,點擊右側(cè)的編輯

修改隧道信息,將保留成功的二級子域名配置到隧道中
- 域名類型:選擇二級子域名
- Sub Domain:填寫保留成功的二級子域名
點擊更新(注意,點擊一次更新即可,不需要重復(fù)提交)

更新完成后,打開在線隧道列表,此時可以看到公網(wǎng)地址已經(jīng)發(fā)生變化,地址名稱也變成了固定的二級子域名名稱的域名

最后,我們使用固定的公網(wǎng)地址訪問,可以看到訪問成功,這樣一個固定且永久不變的公網(wǎng)地址就設(shè)置好了。
配置到隧道中
- 域名類型:選擇二級子域名
- Sub Domain:填寫保留成功的二級子域名
:填寫保留成功的二級子域名
點擊更新(注意,點擊一次更新即可,不需要重復(fù)提交)

更新完成后,打開在線隧道列表,此時可以看到公網(wǎng)地址已經(jīng)發(fā)生變化,地址名稱也變成了固定的二級子域名名稱的域名

最后,我們使用固定的公網(wǎng)地址訪問,可以看到訪問成功,這樣一個固定且永久不變的公網(wǎng)地址就設(shè)置好了。

到此這篇關(guān)于本地部署Python Flask并搭建web問答應(yīng)用程序框架實現(xiàn)遠程訪問的文章就介紹到這了,更多相關(guān)本地部署Python Flask內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于plotly模塊實現(xiàn)的畫圖操作示例
這篇文章主要介紹了Python基于plotly模塊實現(xiàn)的畫圖操作,涉及Python基于plotly模塊的數(shù)值運算與圖形操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-01-01
Pytorch平均池化nn.AvgPool2d()使用方法實例
平均池化層,又叫平均匯聚層,下面這篇文章主要給大家介紹了關(guān)于Pytorch平均池化nn.AvgPool2d()使用方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-02-02
Python網(wǎng)絡(luò)爬蟲技術(shù)高階用法
網(wǎng)絡(luò)爬蟲成為了自動化數(shù)據(jù)抓取的核心工具,Python?擁有強大的第三方庫支持,在網(wǎng)絡(luò)爬蟲領(lǐng)域的應(yīng)用尤為廣泛,本文將深入探討?Python?網(wǎng)絡(luò)爬蟲的高階用法,包括處理反爬蟲機制、動態(tài)網(wǎng)頁抓取、分布式爬蟲以及并發(fā)和異步爬蟲等技術(shù),幫助讀者掌握高級Python爬蟲技術(shù)2024-12-12
pyqt5數(shù)據(jù)庫使用詳細教程(打包解決方案)
這篇文章主要介紹了pyqt5數(shù)據(jù)庫使用教程(打包解決方案),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Python實現(xiàn)對桌面進行實時捕捉畫面的方法詳解
最近在研究目標檢測方面的小東西,需要到對桌面進行實時捕捉畫面。所以本文來用Python實現(xiàn)簡單的對桌面進行實時捕捉畫面,感興趣的可以了解一下2023-01-01

