#python #flask
#python #flask
Вопрос:
я попытался определить @approute в flask, но когда я перехожу к 127.0.0.1: 5000 / home, я получаю, что запрошенный URL 404 не найден.
Мой код выглядит так:
from flask import Flask, render_template, request
from flaskext.mysql import MySQL
app = Flask(__name__)
app.run()
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'user'
app.config['MYSQL_DATABASE_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE_DB'] = 'dbname'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
@app.route('/')
def index():
return "index page"
@app.route('/home')
def home():
return render_template("home.html")
И в flaskproject/templates/home.html у меня есть только:
<h1>Home</h1>
Спасибо за любые предложения
Комментарии:
1. ваше приложение работает на порту 5000? Из того, что вы показываете, похоже, что это должно сработать. Пожалуйста, попробуйте сузить проблему и предоставить больше информации.
2. Возможно несколько вещей (например, вызов
app.run()
перед `@app.route), но нам нужно будет увидеть больше кода, чтобы помочь вам.3. Да, мое приложение работает на 5000, я даже вижу трафик в консоли, когда пытаюсь получить доступ к маршруту, и я запускаю приложение flask с помощью команды «flask run —host 0.0.0.0».
4. Переместите строку
app.run()
в конец файла. Или, что еще лучше, вы можете полностью удалить его, если используете CLI flask.
Ответ №1:
app.run()
Является блокирующим вызовом. Все инструкции, написанные ниже, которые не будут выполнены. Я не знаю, как flask / python обрабатывает методы, определенные ниже. Но наиболее вероятная ошибка заключается в том, что после app.run()
того, как был вызван, больше ничего не будет выполнено. Так что попробуйте это так:
from flask import Flask, render_template, request
from flaskext.mysql import MySQL
app = Flask(__name__)
mysql = MySQL()
app.config['MYSQL_DATABASE_USER'] = 'user'
app.config['MYSQL_DATABASE_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE_DB'] = 'dbname'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
@app.route('/')
def index:
return "index page"
@app.route('/home')
def home:
return render_template("home.html")
if __name__ == '__main__':
app.run()
Комментарии:
1. Одна небольшая проблема. Вам необходимо определить
app
, прежде чем вы сможете использовать@app.route
2. Да, я допустил ошибку при первой публикации, просто отредактировал ее сразу после. Посмотрите еще раз.