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

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

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

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

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

Python 3.x

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

Q&A

解決済

1回答

375閲覧

関数の中身をhtmlにちゃんと表示できるようにしたい。

lilliveon

総合スコア9

Flask

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

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

Python 3.x

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

0グッド

0クリップ

投稿2023/05/09 16:21

編集2023/05/09 16:28

実現したいこと

関数の中身をhtmlにちゃんと表示できるようにしたい。

前提

初投稿です。今日初めてflaskを触っています。
main.pyで定義したindex関数の中身を、index.htmlで表示したいと考えているのですが、以下の画像のように、実行しても引数で渡した部分が何も表示されません。
イメージ説明
ターミナルにエラーメッセージが表示されないため原因の究明に困っています。
main.pyのindexの関数と、index.htmlのbodyの部分を書き換えた際に画像のような状態になってしまいました。
何かアドバイスいただけると嬉しいです。

index.html

1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>みんはや復習</title> 6 </head> 7 <body> 8 <h1>サプー書店</h1> 9 <h2>今月の新刊一覧</h2> 10 {% for book in books %} 11 <p>タイトル: {{ book.title }}</p> 12 <p>金額: {{ book.price }}円</p> 13 <p>入荷日: {{ book.arrival_day }}</p> 14 {% endfor %} 15 </body> 16</html>

__init__.py

1from flask import Flask 2app = Flask(__name__) 3import flaskr.main``

main.py

1from flaskr import app 2from flask import render_template 3 4@app.route("/") 5def index(): 6 books = [ 7 {"title":"はらぺこあおむし", 8 "price":1200, 9 "arrival_day":"2020年7月12日"}, 10 {"title":"ぐりとぐら", 11 "price":990, 12 "arrival_day":"2020年7月13日"}, 13 ] 14 return render_template( 15 "index.html" , 16 book=books 17 )

試したこと

main.pyのindex関数の部分をJupyter Notebookで実行してみましたがエラーは起こりませんでした。

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

Flask==2.3.2
Jinja2==3.1.2

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

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

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

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

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

guest

回答1

0

ベストアンサー

main.py の render_template 関数で、book=books としている部分が問題です。

index.html ファイルでは {% for book in books %} という形で books という変数を使用していますので、render_template 関数で books という名前を渡す必要があります。

main.py の index 関数内の return render_template の部分を次のように修正してください。

python

1return render_template( 2 "index.html", 3 books=books 4)

投稿2023/05/09 16:53

jp-seemore.com

総合スコア62

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

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

lilliveon

2023/05/09 16:59

無事解決しました。 回答いただきありがとうございました🙇
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問