PythonAnywhere でFlaskを使用して簡単なテストサイトを実行しています。スクリプトを実行すると、最初のサイト(index.html)が表示され、すべてが正常に見えます。ただし、リンク(signup.htmlなど)のいずれかをクリックすると、404エラーが発生します。
見つかりません
要求されたURLがサーバーで見つかりませんでした。
URLを手動で入力した場合は、スペルを確認してもう一度お試しください。
ただし、HTMLファイルはすべてindex.htmlとともにtemplatesフォルダーにあります。サーバー上で見つからないのはなぜですか?
アプリを実行するPythonコードは次のとおりです。
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/')
def runit():
return render_template('index.html')
if __name__ == '__main__':
app.run()
そして、これがリンクを保持するindex.htmlのHTML部分です。
<a class="btn btn-lg btn-success" href="signup.html">Sign up</a>
サインアップURLに別のルートを作成する必要があるため、メインのWebアプリコードで「/signup.html」のルートを追加する必要があります。
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/')
def runit():
return render_template('index.html')
@app.route('/signup.html')
def signup():
return render_template('signup.html')
if __name__ == '__main__':
app.run()
URLを少しきれいにしたい場合は、Pythonで次のようにすることができます。
@app.route('/signup')
def signup():
return render_template('signup.html')
そして、一致するようにリンクコードを変更します。
<a class="btn btn-lg btn-success" href="signup">Sign up</a>
メインのFlaskドキュメントには、クイックスタートガイドにルートの概要が記載されています: http://flask.pocoo.org/docs/quickstart/