二手产品经理

二手产品经理

THIS IS RENO

セッション - 85日 - Pythonを100日間オンラインで学ぶ

記録#

  1. 今日は HTTP & SESSION について学びました。session は、ユーザーのコンピュータにユーザーに関連するいくつかの内容を保存する方法です。
  2. session を保存する前に、まず session_key を作成する必要があります。この key は漏洩してはいけません。さもなければ、ユーザーの情報が安全ではなくなります。したがって、key は環境変数に保存する必要があります。 app.secret_key = os.environ['sessionKey']
  3. 保存が必要なときは、session データに値を代入するだけで済みます。例えば:session["myName"]
  4. session.get("myName")を使用して、変数が存在するかどうかを判断します。
  5. session.clear()を使用して、すべての session をクリアします。
  6. 今日の練習は、昨日の基礎の上にユーザー名キャッシュ機能とログアウト機能を追加することでした。
  7. 今日の練習では、route の設定に同じ名前のルートが 2 つ存在できる新しい知識も学びましたが、後のメソッドは同じであってはいけません。コードの login ルートのように。

コード#

from flask import Flask, request, redirect, session
from replit import db
import os

app = Flask(__name__, static_url_path='/static')
app.secret_key = os.environ['secret_key']


@app.route("/")
def index():
    if session.get("name"):
        return redirect("/login")
    else:
        page = """
        <p><a href="/sign">サインアップ</a></p>
        <p><a href="/log">ログイン</a></p>
        """
        return page


@app.route("/sign")
def sign():
    if session.get("name"):
        return redirect("/login")
    else:
        f = open("sign.html", "r")
        page = f.read()
        f.close
        return page


@app.route("/signup", methods=["POST"])
def signup():
    if session.get("name"):
        return redirect("/login")
    else:
        user = request.form
        if user["username"] not in db.keys():
            db[user["username"]] = {
                "username": user["username"],
                "name": user["name"],
                "password": user["password"]
            }
            session["name"] = user['name']
            page = f"こんにちは {session['name']}"
        else:
            page = f"{user['username']} は存在します"
        return page


@app.route("/log")
def log():
    if session.get("name"):
        return redirect("/login")
    else:
        f = open("login.html", "r")
        page = f.read()
        f.close
        return page


@app.route("/login", methods=["GET"])
def sessionlogin():
    if session.get("name"):
        page = f"<h1>こんにちは {session['name']}</h1><p><a href='/reset'>リセット</a></p>"
    return page


@app.route("/login", methods=["POST"])
def login():
    user = request.form
    if db[user["username"]]["username"] == user["username"] and db[
            user["username"]]["password"] == user["password"]:
        session["name"] = db[user["username"]]["name"]  # ユーザー名をセッションに保存
        return redirect("/login")
    else:
        page = "ユーザー名またはパスワードエラー"
    return page


@app.route("/reset")
def reset():
    session.clear()
    return redirect("/log")


app.run(host='0.0.0.0', port=81)


読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。