Flask неправильно воспринимает вопросительный знак (?) в route
Столкнулся со странной ошибкой Flask при написании route. Код программы:
from flask import Flask
app = Flask(__name__)
@app.route('/xmlhttprequest?account-id=<int:id>')
def main(id):
if id == 1:
return 'account john'
else:
return 'account not found'
if __name__ == '__main__':
app.run(debug=True)
Мы видим, что в route прописан вопросительный знак, перейдя по ссылке http://127.0.0.1:5000:5000/xmlhttprequest?account-id=1, получаем ошибку Not Found The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
Убрав в route вопросительный знак, (@app.route('/xmlhttprequestaccount-id=<int:id>')), оставив остальную часть программы в том же состоянии, перейдя по ссылке http://127.0.0.1:5000:5000/xmlhttprequestaccount-id=1, получим желаемый ответ account john.
Подскажите, как нужно действовать правильно.
Ответы (2 шт):
Так как вы сделали - не совсем правильно. Как вариант вы можете использовать: Flask URL Converters
Для этого измените ваш роутер:
@app.route('/xmlhttprequest/<int:id>')
И далее обращайтесь к нему по:
С точки зрения Flask, все что идет после вопросительного знака - это не часть пути, а параметры запроса. Нужно получать переданный account-id из request.args:
from flask import Flask, request
app = Flask(__name__)
@app.route('/xmlhttprequest')
def main():
account_id = request.args.get('account-id', type=int)
if account_id == 1:
return 'account john'
else:
return 'account not found'
if __name__ == '__main__':
app.run(debug=True)