web-dev-qa-db-ja.com

リンクがサーバー上にあるのに「404NotFound」エラーが発生するのはなぜですか?

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>
10
user3047960

サインアップ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/

3
Jacinda