やりたいこと
HTMLの中身を繰り返し処理 (verb0~verb6) したいです。
- app.py (
@app.route~
が記述) - base_wordforms.html (HTML継承のための親ファイル)
- test.html (HTML継承のための子ファイル。
{% extends "base_wordforms.html" %}
)
該当箇所
python
1# app.py 2@app.route("/testverb", methods=["GET"]) 3def testverb(): 4 vrb_l = ru_func.verbtest() 5 return render_template("test.html", 6 verb0=vrb_l[0], 7 verb1=vrb_l[1], 8 ...(略) 9 verb6=vrb_l[6])
html
1<!--base_wordforms.html--> 2<h1>{% block verb0 %}{% endblock %}の現在活用</h1> 3<td>{% block verb1 %}{% endblock %}</td> 4...(略) 5<td>{% block verb6 %}{% endblock %}</td>
html
1<!--test.html--> 2{% block verb0 %} 3 {{verb0 }} 4{% endblock %} 5 6{% block verb1 %} 7 {{verb1}} 8{% endblock %} 9...(略) 10{% block verb6 %} 11 {{verb6}} 12{% endblock %}
試したこと
test.html
の{% block verb0 %}{{verb0}}{% endblock %}
を以下のようにしてみましたがはじかれます。。jinja2が問題だとは思うのですが、では具体的にどう変えたらいいのかがわかりません(>_<)
html
1<!--test.html--> 2{% for i in range(7) %} 3{% block {{"verb" + str(i)}} %}{{"verb" + str(i)}}{% endblock %} 4{% endfor %}
# エラー文 jinja2.exceptions.TemplateSyntaxError: expected token 'name', got '{'
いろいろいじってみたが。。。?
エラーが出続けて眠いのでギブアップorz 惜しいような気がするが堂々巡り。
問題は{% block xxx %}
の扱い方のようでjinja2.exceptions.TemplateSyntaxError: unexpected '%'とか'+'
云々と出てきて治してもエラーが出続ける。
ファイルの場所
- app.py (ルートディレクトリ)
- templates/base_wordforms.html
- templates/test.html
できましたー(≧∀≦)
siruku6さまの以下の一言
ソースを見たのですが、{% block %} と {% endblock %}は、そこにはいらなかったような気がします
test.html
には当てはめたのですが、base_wordforms.html
には当てはめず「{% block verb0 %}{% endblock %}
で。。。えっと0の所はどう変数を持ってこようか?」などと考えていました。とりあえず夜も遅いしベッドに入って目が覚めてO'Reillyの読み放題サービスで、Flask Framework Cookbook: Over 80 proven recipes and techniques for Python web development with Flask, 2nd Edition とFlask By Example by Gareth Dwyer(2016-03-31) を行ったり来たり、siruku6さまに言われたことを考えつついろいろ脳内シミュレーションして「もしかしたらbase_wordforms.html
はブロックなしでシンプルに{{ verb[0] }}
なんて書けばいいんじゃない?」ということに思い至りそれで試したらうまくいきました:D
学んだこと
{{}}
にはPythonの変数が入る{% block xxx %}{% endblock %}
のxxx
の部分の名前は同じものを同じページで1回以上つかったらだめ。
回答1件
あなたの回答
tips
プレビュー