Я новичок в Python Flask. Я хочу, чтобы мое приложение Python запускало веб-сервер (и части приложения Flask) только по желанию пользователя во время выполнения. В противном случае приложение должно просто запустить программу на терминале. Я использовал следующий код.
Пользователь, выбравший опцию «1», работает нормально - программа запускается до конца без запуска веб-сервера.
Однако, если пользователь выбирает опцию «2» ниже - все приложение перезапускается , снова запрашивая тот же пользовательский ввод. Страница html также не отображается на этом этапе. Только если пользователь выберет опцию «2» сейчас во второй раз, мы получим работающий локальный веб-сервер и html webpage localhost: 5000 / index отобразит, как и ожидалось.
( Пользователь выбирает опцию «2», а затем при перезапуске выбирает опцию «1» - заканчивается, когда программа терминала и веб-страница никогда не рендерится)
Как пользователь может выбрать опцию «2» только один раз и создать компонент веб-приложения запустить? Почему этот app.run()
выполняется дважды для запуска веб-приложения?
import flask
app = flask.Flask(__name__)
app.config["DEBUG"]= True
@app.route('/index', methods=['GET'])
def home():
print("came home!..")
return flask.render_template('index.html')
print('hello there')
a = input("do you want 1. Normal app or 2.Web app? (1/2): ")
if a=='2':
#do the flask thing
print("Woo! the next line should start off the web server too .. but does it?")
b = input("press enter to continue .. and then check with web browser")
app.run()
else:
print("Well done. This should end the terminal program cleanly.")
b = input("press enter to continue .. and end.")
print(".. AND we are out of the main block")
Результаты, показанные ниже, получены с терминала, где пользователь вынужден дважды выбрать опцию '2', чтобы запустить сервер. Веб-страница хорошо отображается в браузере. при нажатии Ctrl + C выходим из приложения (дважды!)
hello there
do you want 1. Normal app or 2.Web app? (1/2): 2
Woo! the next line should start off the web server too .. but does it?
press enter to continue .. and then check with web browser
* Serving Flask app "try" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
hello there
do you want 1. Normal app or 2.Web app? (1/2): 2
Woo! the next line should start off the web server too .. but does it?
press enter to continue .. and then check with web browser
* Debugger is active!
* Debugger PIN: 132-339-530
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
came home!..
127.0.0.1 - - [26/Apr/2020 18:12:38] "GET /index HTTP/1.1" 200 -
.. AND we are out of the main block
.. AND we are out of the main block