记录#
- 今天学习将之前的知识点串联起来了,首先是 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">Sign Up</a></p>
<p><a href="/log">Log In</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"Hello {user['name']}"
else:
page = f"{user['username']} exists"
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"Hello {db[user['name']]}"
else:
page = "Username Or Password error"
return page
app.run(host='0.0.0.0', port=81)