二手产品经理

二手产品经理

THIS IS RENO

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

レコード#

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

CODE#

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)


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