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

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日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

742閲覧

Flask及びjinja2において, html上で{{ }}が入れ子になってしまうとき.

Algeot

総合スコア21

Flask

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

Jinja2

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

Python 3.x

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/09/06 09:28

今 names は list 型のデータであるとして,

python3

1names = ['suzuki', 'tamura', 'imagawa']

のように様々な名前が入っているとします. このとき html 上で

index.html

1{% for name in names %} 2 <a href="{{ 'url_for('form', chosen='{{ name }}' }}">Click here. </a> 3{% endfor %}

と書いて, 最終的には名前の数だけ "Click here. " を作り, それぞれが /form?chosen=...という http にアクセスできるようにしたいのです.
しかしこのままでは {{ }} が入れ子になっているため(?), 正常に動きません.
テストケースとして chosen='abc' を代入した下記のもの

index.html

1{% for name in names %} 2 <a href="{{ 'url_for('form', chosen='abc' }}">Click here. </a> 3{% endfor %}

は正常に /form?chosen=abc にアクセスできました.
また jinja2 の記法では python の format 関数のようなことができると聞いたので

index.html

1{% for name in names %} 2 <a href="{{ 'url_for('form', chosen='{}'!'.format(name) }}">Click here. </a> 3{% endfor %}

と書き換えてみましたが失敗しました.

目標を達成するためにはどのように書けばよいのでしょうか.
Flask を始めたばかりのため, 初歩的な質問かもしれませんが, 何卒宜しくお願い致します.

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

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

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

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

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

guest

回答1

0

ベストアンサー

{% for name in names %} <a href="{{ url_for('form', chosen=name) }}">Click here. </a> {% endfor %}

ですね

投稿2022/09/06 09:45

quickquip

総合スコア11038

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

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

Algeot

2022/09/06 09:58

できました! 迅速な回答に感謝いたします. よりシンプルに書けるなんて盲点でした. {{ }} 内は python 上の処理なので name を囲う必要はないということなのですね. ありがとうございました.
quickquip

2022/09/06 10:02

正確には {{ }} 内は jinja2 のインタプリタが処理します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問