質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

605閲覧

render_templateにて、TemplateNotFound: crud/index.html と出てしまう

hal0926

総合スコア1

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/03/21 15:21

編集2023/03/21 15:25

困っていること

Python flaskによるwebアプリ開発入門という書籍にて、どうしてもテキスト通りにいかない部分があり質問させていただきます。

前提

イメージ説明

発生している問題・エラーメッセージ

http://127.0.0.1:5000/crud/ にアクセスすると

TemplateNotFound jinja2.exceptions.TemplateNotFound: crud/index.html

該当のソースコード

views.py

1from flask import Blueprint, render_template 2 3crud = Blueprint( 4 "crud", 5 "__name__", 6 template_folder="templates", 7 static_folder="static", 8) 9 10@crud.route("/") 11def home(): 12 return render_template("crud/index.html")

app.py

1from flask import Flask 2 3def create_app(): 4 app = Flask(__name__) 5 from apps.crud import views as crud_views 6 app.register_blueprint(crud_views.crud, url_prefix="/crud") 7 return app

.envにて

FLASK_APP=apps.app:create_app

を設定しプロンプトよりflask runとしたところ、上記の結果となりました。

試したこと

template_folder="templates",
の部分を
template_folder="apps/crud/templates",
とするとエラーなくアクセスすることができます。

補足情報(FW/ツールのバージョンなど)

テキストとディレクトリ構成は一切変えておりません。
views.pyと同じフォルダ内にtemplatesとstaticを作っているのですが、教科書通りうまくいかないのは何故なのかわからず質問させていただきました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

views.py

1crud = Blueprint( 2 "crud", 3 __name__, # ☆☆ ここ ☆☆ 4 template_folder="templates", 5 static_folder="static", 6)

と本には書かれてませんか?

投稿2023/03/21 16:09

quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hal0926

2023/03/21 16:16

おっしゃる通りでした。 本当に恥ずかしいミスです。2時間もハマってしまいました…。 本当に本当にお手すきでしたら、なぜ"__name__"と間違えて打ってしまった場合、templates = "apps/crud/templates"とすると動くのかもご教授いただけると後学のために本当にありがたいです…。 この度は迅速な解答本当にありがとうございました。
hal0926

2023/03/21 17:19

ありがとうございます。少しですが理解できた気がします。 __name__によってimport_nameに渡されるのはBlueprintオブジェクトの生成する場所つまりviewsとなり、template_folderはそこからの相対パスでよいからtemplatesのみの記述でよいのですね。逆にそうでなかった場合はflaskフォルダからの絶対パスが必要と解釈しました。 gitも丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問