我在我的電腦上運行一個 Flask 服務器,host = "0.0.0.0"
當我從另一臺計算機訪問服務器時,它作業正常,但是當我將它重定向到“localhost:5000”時,它在另一臺計算機上不起作用。
這是我的代碼
from flask import Flask, url_for, redirect, request, render_template
import pickle
app = Flask(__name__)
@app.route("/")
def login_page():
return redirect(url_for("advanced_login_page",prevtry=False))
@app.route("/login_attempt/<int:prevtry>")
def advanced_login_page(prevtry):
return render_template('login.html',prevTry=prevtry)
@app.route("/login",methods=["POST","GET"])
def login():
if request.method == "POST":
username = request.form["username"]
password = request.form["password"]
elif request.method == "GET":
username = request.args.get("username")
password = request.args.get("password")
return redirect(f"/user/{username}")
@app.route("/user/<username>")
def home_page(username):
return "Hello %s" % username
app.run(host="0.0.0.0")
繼承人login.html
<!doctype html>
<html>
<body>
<form action="http://localhost:5000/login" method="post">
<p>UserName:<input type="text" name="username"/></p>
<p>Password:<input type="password" name="password"/></p>
<p><input type="submit" value="login"/></p>
</form>
{% if prevTry==True %}
<p>Incorrect Username or Password</p>
{% endif %}
</body>
</html>
我使用 host = "0.0.0.0" 運行代碼,然后在連接到同一網路的手機上訪問它。手機顯示呈現的 login.html,但是當我嘗試輸入任何內容并登錄時,它重定向到“localhost:5000/user/”,其中用戶名是輸入的用戶名。然后它顯示“本地主機拒絕連接”
uj5u.com熱心網友回復:
想一想:
localhost指當前計算機。所以,在你的電腦localhost:5000上是指運行在你電腦上5000埠的服務器,而在另一臺電腦上,它是指在另一臺電腦上運行的服務器,在5000埠上。服務器沒有在另一臺電腦上運行,所以瀏覽器嚇壞了。
解決此問題的最佳方法是重定向到所有計算機上都可用且僅指向您的計算機的主機。我不知道您是如何從另一臺計算機訪問您的計算機的,但我將使用假設的 IP 地址 192.168.0.10。請記住將此 IP 地址更改為您實際訪問計算機的方式,無論是通過 IP 地址還是主機名。這是一個例子:
<!doctype html>
<html>
<body>
<form action="http://192.168.0.10:5000/login" method="post">
<!-- ^^^^^^^^^^^^ <-- change this -->
<p>UserName:<input type="text" name="username" /></p>
<p>Password:<input type="password" name="password" /></p>
<p><input type="submit" value="login" /></p>
</form>
{% if prevTry==True %}
<p>Incorrect Username or Password</p>
{% endif %}
</body>
</html>
這應該可以解決您的問題。
在現實世界中,您需要在域(例如example.com)上運行網站。執行此操作時,最好獲取當前機器的主機名,但在您的情況下,這太過分了,很可能無法正常作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522525.html
標籤:Python烧瓶
