記錄#
- 今天學習將之前的知識點串聯起來了,首先是 db 操作,然後是最近的 request 操作。這其中還涉及字典數組等操作。
- 在 replit 中,db 中的內容需要先存進去,也就是 db []= 字符串,然後才能讀取,有點不方便的是這個存入的代碼在後續的運行中需要被註釋。
- 對
static_url_path='/static'
還是有一點不明白,AI 這麼講:static_url_path
主要是為了更好地組織 URL 結構,使代碼更具可讀性和可維護性,不設置這個參數也是可以的。 - 學習如何修改密碼,在視頻的開始部分並沒有修改指定用戶的密碼。當庫裡只有一個的時候沒問題,但是如果有多個,那就錯了。寫代碼的時候也要盡量避免這種問題,當然還是要多用戶的。
- 在排查錯誤的練習中,發現了代碼中一個 bug,可以改其他用戶的密碼,哈哈哈!
CODE#
from flask import Flask, request, redirect
from replit import db
app = Flask(__name__, static_url_path='/static')
@app.route("/")
def index():
page = """
<p><a href="/sign">註冊</a></p>
<p><a href="/log">登錄</a></p>
"""
return page
@app.route("/sign")
def sign():
f = open("sign.html", "r")
page = f.read()
f.close
return page
@app.route("/signup", methods=["POST"])
def signup():
user = request.form
if user["username"] not in db.keys():
db[user["username"]] = {
"username": user["username"],
"name": user["name"],
"password": user["password"]
}
page = f"你好 {user['name']}"
else:
page = f"{user['username']} 已存在"
return page
@app.route("/log")
def log():
f = open("login.html", "r")
page = f.read()
f.close
return page
@app.route("/login", methods=["POST"])
def login():
user = request.form
print(f"""
{db[user["username"]]["username"]} == {user["username"]} and {db[
user["username"]]["password"]} == {user["password"]}:
""")
if db[user["username"]]["username"] == user["username"] and db[
user["username"]]["password"] == user["password"]:
page = f"你好 {db[user['name']]}"
else:
page = "用戶名或密碼錯誤"
return page
app.run(host='0.0.0.0', port=81)