Un problema
Extraviado
La URL solicitada no se encontró en el servidor. Si ingresó la URL manualmente, verifique la ortografía y vuelva a intentarlo.
Al aprender el matraz, debe definir la página de inicio de sesión. La función de enrutamiento se define naturalmente de la siguiente manera:
@app.route("/login", methods=['GET', 'POST'])
Después de escribir la función de enrutamiento, visité la página y descubrí que era:
El código fuente es el siguiente:
@app.route("/login", methods=['GET', 'POST'])
def login():
return render_template('login.html', title='Sign In')
Dos ideas de solución
Intente resolver el problema en Baidu, desafortunadamente, la capacidad de búsqueda es limitada y no puedo encontrarla. Intente pensar si esta función de ruta y vista no está agregada al url_map, y luego intente imprimir el resultado:
if __name__ == '__main__':
# 通过url_map可以查看整个flask中的路由信息
print(app.url_map)
# 启动flask程序
app.run(debug=True)
Los resultados son los siguientes:
No hay problema, lo ha hecho, pero no se puede acceder a él. Cuando quieras rendirte, gg
El resultado es realmente encontrado. Cambie "/ login" en @ app.route ("/ login", métodos = ['GET', 'POST']) a "/ login /" o "/ 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?
Tres más pensando, ¿por qué?
¿Por qué '/ index' está bien, pero no se puede acceder a '/ login'?
La explicación en el documento del matraz es:
La URL canónica tiene una barra. Es similar a una carpeta o directorio en un sistema de archivos. Si la URL que visita no tiene una barra, Flask lo redireccionará a la URL canónica con una barra (la razón por la que no se puede acceder a / login).
Acerca del enrutamiento de URL sin barras. Es similar al nombre de la ruta de un archivo. El uso de una barra para acceder a la URL generará un error 404 "no encontrado". Esto ayuda a mantener únicas las URL de estos recursos, lo que ayuda a los motores de búsqueda a evitar indexar la misma página dos veces.
Sin embargo, no creo que la explicación sea suficiente, entonces, ¿por qué se puede acceder a / index o / hello? como sigue:
@app.route('/index')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
Lea las opiniones de diferentes personas:
Siento que la explicación es inverosímil, pero aun así no respondí a la segunda pregunta.
Comprende por ti mismo
'/ login' es el enrutamiento integrado,
Necesita ser diferente al escribir por su cuenta,
Entonces podemos usar '/ login2', '/ login3', '/ login4', '/ login / para acceder correctamente
Comprenda las reglas y conéctese a la ruta especial '/ login' es una ruta incorporada. Cuando se encuentre con situaciones similares en el futuro, únase lentamente a este grupo especial.
Los colegas que tengan ideas pueden discutir a continuación (la sustancia principal es lo que sucedió, no lo entendí, solo puede resolver el problema)