問題
見つかりません
要求されたURLがサーバーで見つかりませんでした。URLを手動で入力した場合は、スペルを確認して再試行してください。
フラスコを学習するときは、ログインページを定義する必要があります。ルーティング機能は当然次のように定義されます。
@app.route("/login", methods=['GET', 'POST'])
ルーティング関数を書いた後、私はそのページにアクセスし、それが次のようになっていることを発見しました。
ソースコードは次のとおりです。
@app.route("/login", methods=['GET', 'POST'])
def login():
return render_template('login.html', title='Sign In')
2つのソリューションのアイデア
Baiduの問題を解決してみてください。残念ながら、検索機能が制限されていて見つかりません。このルートとビューの機能がurl_mapに追加されていないかどうかを検討してから、出力を出力してみてください。
if __name__ == '__main__':
# 通过url_map可以查看整个flask中的路由信息
print(app.url_map)
# 启动flask程序
app.run(debug=True)
結果は次のとおりです。
問題ありませんが、アクセスできません。あきらめたいときは、gg
結果は実際に見つかりました。 @ app.route( "/ login"、methods = ['GET'、 'POST'])の "/ login"を "/ login /"または "/ loginxxx"に変更してください。
When I type /login as url,it will go wrong
For example:
from flask import Flask ,url_for,render_template,request
app = Flask(__name__)
@app.route('/login')
def index():
return "index"
if __name__== "__main__":
app.run()
The error turn out to be like this:
Not Found.
The requested URL was not found on the server.
When I replace /login with /login/ or any other words like /log , it will be all right. How does that happen?
さらに3つの考え、なぜですか?
「/ index」はOKなのに「/ login」にアクセスできないのはなぜですか?
フラスコ文書の説明は次のとおりです。
正規URLにはスラッシュがあります。これは、ファイルシステムのフォルダまたはディレクトリに似ています。アクセスするURLにスラッシュがない場合、Flaskはスラッシュ付きの正規URLにリダイレクトします(/ loginにアクセスできない理由)。
スラッシュなしのURLのルーティングについて。これは、ファイルのパス名に似ています。スラッシュを使用してURLにアクセスすると、404「見つかりません」エラーが生成されます。これにより、これらのリソースのURLを一意に保つことができ、検索エンジンが同じページに2回インデックスを付けることを回避できます。
しかし、説明だけでは不十分だと思いますが、なぜ/ indexや/ helloにアクセスできるのでしょうか。次のように:
@app.route('/index')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
さまざまな人々の意見を読んでください:
説明はとてつもない感じがしますが、それでも2番目の質問には答えられませんでした。
自分で理解する
'/ login'は組み込みのルーティングであり、
自分で書くときは違う必要があります、
したがって、「/ login2」、「/ login3」、「/ login4」、「/ login /」を使用して正常にアクセスできます。
ルールを把握し、特別な「/ login」に接続するのは組み込みのルートです。将来同様の状況が発生した場合は、この特別なプールにゆっくりと参加してください。
アイデアを持っている同僚は、以下で議論することを歓迎します(主な内容は何が起こったのか、私はそれを理解していませんでした、それは問題を解決することしかできません)