レコード#
- 今日は以前の知識を結びつける学習をしました。まずは db の操作、そして最近のリクエストの操作です。これには辞書配列なども関わってきます。
- replit では、db の内容を最初に保存する必要があります。つまり、db []= 文字列として保存し、それから読み取る必要があります。少し不便なのは、この保存コードが後続の実行中にコメントアウトされる必要があることです。
static_url_path='/static'
については、少し理解できません。AI は次のように説明しています:static_url_path
は主に URL の構造をより良く組織化し、コードをより読みやすく、保守しやすくするためのものです。このパラメータを設定しなくても問題ありません。- パスワードの変更方法を学びましたが、ビデオの最初の部分では特定のユーザーのパスワードを変更する方法は示されていませんでした。ライブラリに 1 つしかない場合は問題ありませんが、複数ある場合は問題が発生します。コードを書く際には、このような問題をできるだけ避けるようにする必要があります。もちろん、複数のユーザーを考慮する必要があります。
- エラーのトラブルシューティングの練習中に、コードの中にバグが見つかりました。他のユーザーのパスワードを変更することができるんです、ハハハ!
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)