何らかの理由で、url_for() を追加するたびに index.html ファイルでエラーが検出され続けます。これは、関数を index.html のみ、more.html のみ、またはその両方に追加した場合に発生します。
ただし、More.html は問題なく機能を受け入れるようです。
このコードは、2 番目の方法でのみ機能します。url_for() がコードに追加されるとすぐに、最初のメソッドが機能しません。
app.py:
import datetime
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
now = datetime.datetime.now()
new_year = now.month == 1 and now.day == 1
return render_template("index.html", new_year=new_year)
@app.route('/<string:name>')
def more(name):
name = name.capitalize()
defaultNames = ["Albert", "Michelle", "Ivette", "Sylvia"]
return render_template("more.html", name=name, defaultNames=defaultNames)
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Python Tutorial</title>
</head>
<body>
{% if new_year %}
<h1>It's NEW year's</h1>
{% else %}
<h1>NOT NEW YEAR'S</h1>
{% endif %}
<a href="{{ url_for('more') }}">names page</a>
</body>
</html>
more.html:
<!DOCTYPE html>
<html>
<head>
<title>names page</title>
</head>
<body>
<h1>hello, {{name}}!</h1>
<ul>
{% for name in defaultNames %}
<li>{{ name }}</li>
{% endfor %}
</ul>
<a href="{{ url_for('index') }}">Go back</a>
</body>
</html>
url_for() 関数を使用してコードを実行しようとすると、「内部サーバー エラー」が表示されます。ただし、2番目の方法は正常に機能します。