実現したいこと
ここに実現したいことを箇条書きで書いてください。
- flask runでアプリ起動
前提
『Python FlaskによるWebアプリ開発入門』を読み進めています。
flask-debugtoolbarをインストール後(本書p67)にflask runすると、以下のエラーメッセージが発生しました。
解消法が分かる方はいらっしゃいますでしょうか?><
発生している問題・エラーメッセージ
Error: While importing 'apps.minimalapp.app', an ImportError was raised: Traceback (most recent call last): File "/Users/xxxxx/flaskbook/venv/lib/python3.12/site-packages/flask/cli.py", line 219, in locate_app __import__(module_name) File "/Users/xxxxx/flaskbook/apps/minimalapp/app.py", line 13, in <module> from flask_debugtoolbar import DebugToolbarExtension File "/Users/xxxxx/flaskbook/venv/lib/python3.12/site-packages/flask_debugtoolbar/__init__.py", line 5, in <module> from flask.globals import _request_ctx_stack ImportError: cannot import name '_request_ctx_stack' from 'flask.globals' (/Users/xxxxx/flaskbook/venv/lib/python3.12/site-packages/flask/globals.py)
ソースコード
import logging from email_validator import validate_email, EmailNotValidError from flask import ( Flask, render_template, url_for, current_app, g, request, redirect, flash ) from flask_debugtoolbar import DebugToolbarExtension app = Flask(__name__) app.config["SECRET_KEY"] = "2AZSMss3p5QPbcY2hBsJ" app.logger.setLevel(logging.DEBUG) app.config["DEBUG_TB_INTERCEPT_REDIRECTS"] = False toolbar = DebugToolbarExtension(app) @app.route("/") def index(): return "Hello, Flaskbook!" @app.route("/hello/<name>", methods=["GET", "POST"], endpoint="hello-endpoint") def hello(name): return f"Hello, {name}!" @app.route("/name/<name>") def show_name(name): return render_template("index.html", name=name) @app.route("/contact") def contact(): return render_template("contact.html") @app.route("/contact/complete", methods=["GET", "POST"]) def contact_complete(): if request.method == "POST": username = request.form["username"] email = request.form["email"] description = request.form["description"] is_valid = True if not username: flash("ユーザ名は必須です") is_valid = False if not email: flash("メールアドレスは必須です") is_valid = False try: validate_email(email) except EmailNotValidError: flash("メールアドレスの形式で入力してください") is_valid = False if not description: flash("問い合わせ内容は必須です") is_valid = False if not is_valid: return redirect(url_for("contact")) # メールを送る(最後に実装) flash("問い合わせ内容はメールにて送信されました。問い合わせありがとうございます。") return redirect(url_for("contact_complete")) return render_template("contact_complete.html") with app.test_request_context(): # / print(url_for("index")) # /hello/world print(url_for("hello-endpoint", name="world")) # /name/ichiro?page=1 print(url_for("show_name", name="ichiro", page=1)) with app.test_request_context("/users?updated=true"): print(request.args.get("updated"))
補足情報(FW/ツールのバージョンなど)
Flaskのバージョン情報など
1Name: Flask 2Version: 3.0.0 3Summary: A simple framework for building complex web applications. 4Home-page: 5Author: 6Author-email: 7License: 8Location: /Users/yasu/flaskbook/venv/lib/python3.12/site-packages 9Requires: blinker, click, itsdangerous, Jinja2, Werkzeug 10Required-by: Flask-DebugToolbar
FlaskDebugToolbarのバージョン情報など
1Name: Flask-DebugToolbar 2Version: 0.13.1 3Summary: A toolbar overlay for debugging Flask applications. 4Home-page: https://github.com/flask-debugtoolbar/flask-debugtoolbar 5Author: Michael van Tellingen 6Author-email: michaelvantellingen@gmail.com 7License: UNKNOWN 8Location: /Users/yasu/flaskbook/venv/lib/python3.12/site-packages 9Requires: Blinker, Flask, itsdangerous, werkzeug 10Required-by:
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/11/03 09:41