やろうとしていること
Flaskでログイン機能を搭載したウェブアプリを作ろうとしており、今はIDとパスワードを入力してもらった新規アカウント作成をする機能を作成しています。
IDEはCS50IDEというWebベースのIDEを利用しています。
デバイスはWindowsです。
以下が登録する部分のCodeです。(application.pyに書き込んでいます)
python
1@app.route("/register", methods=["GET", "POST"]) 2def register(): 3 """Register user""" 4 if request.method == "POST": 5 # IDとパスワードが有効かどうか調べる 6 # もし有効じゃなかった場合エラーメッセージを返す。 7 # もしユーザーネームがすでに登録されていた場合、alertで/registerにこのユーザーIDは無効ですと表示 8 username = request.form.get("username") 9 password = request.form.get("password") 10 confirmation = request.form.get("pass_confirm") 11 12 # Ensure username was submitted 13 if not username: 14 return apology("must provide username", 403) 15 # Ensure password was submitted 16 elif not password: 17 return apology("must provide password", 403) 18 # Ensure password equal confirm 19 elif password != confirmation: 20 return apology("must provide same password", 403) 21 elif not allow_password_rule(password): 22 return apology("8文字以降の特殊記号を含むパスワードを入力してください", 403) 23 # Query database for username 24 25 user = db.execute("SELECT * FROM users WHERE username = :username", username=username) 26 27 # Ensure username exists and password is correct 28 if len(user) > 0: 29 flash('無効なIDです。別のIDを入力するか、すでに登録している場合はログインしてください') 30 return redirect("/register") 31 # どちらにも当てはまらなかった場合は、データベースにIDとパスワードを追加する。(パスワードはハッシュ化されたもの) 32 hash = generate_password_hash(password) 33 db.execute("INSERT INTO users(username, hash) VALUES (:username, :hash)", username=username, hash=hash) 34 35 36 # Redirect user to login page 37 return redirect("/") 38 39 else: 40 return render_template("register.html")
以下は同じapplication.pyの冒頭に書いているコードです。
python
1import os 2import re 3 4from cs50 import SQL 5from flask import Flask, flash, redirect, render_template, request, session 6from flask_session import Session 7from tempfile import mkdtemp 8from werkzeug.exceptions import default_exceptions, HTTPException, InternalServerError 9from werkzeug.security import check_password_hash, generate_password_hash 10 11from helpers import apology, login_required, lookup, usd 12 13# Configure application 14app = Flask(__name__) 15 16# Ensure templates are auto-reloaded 17app.config["TEMPLATES_AUTO_RELOAD"] = True 18 19class ValidationError(Exception): 20 def __init__(self, message=None, code=None): 21 super(ValidationError, self).__init__() 22 if message is not None: 23 self.message = message 24 self.code = code 25 26# Ensure responses aren't cached 27@app.after_request 28def after_request(response): 29 response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" 30 response.headers["Expires"] = 0 31 response.headers["Pragma"] = "no-cache" 32 return response 33 34 35# Custom filter 36app.jinja_env.filters["usd"] = usd 37 38# Configure session to use filesystem (instead of signed cookies) 39app.config["SESSION_FILE_DIR"] = mkdtemp() 40app.config["SESSION_PERMANENT"] = False 41app.config["SESSION_TYPE"] = "filesystem" 42Session(app)
エラー内容
/register ページにて、
正しいかたちでID,Passwordを入力して登録ボタンを押すと、
以下のようなエラーメッセージが出ます。
192.168.34.189 - - [20/Aug/2021 23:55:14] "GET / HTTP/1.0" 302 - INFO: 192.168.34.189 - - [20/Aug/2021 23:55:14] "GET / HTTP/1.0" 302 - WARNING: Exception raised while handling cache file Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/cachelib/file.py", line 219, in delete os.remove(self._get_filename(key)) FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpqdy-----/ae7897b20b-----------------'
(念の為---によって一部非表示にしております)
試してみたこと
- 一度サイトのキャッシュやクッキーを削除したのですが、現状は変わりませんでした。
- おそらく、以前一時ファイルを複数削除してしまったのが理由だと思い、PCの一時ファイルを見直したのですが、どこを直せば良いのかわかりませんでした。
- pythonをローカルにインストールしてみましたが変わりませんでした。
長文失礼しました。
皆目検討がつかないので、ぜひともご助言お願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 02:51
2021/08/21 02:54
2021/08/21 03:03