我不明白为什么如果我想运行Flask应用程序我需要
pswd
但如果我想运行Django应用程序我只
(venv) $ export FLASK_APP=microblog.py
(venv) $ flask run
没有(venv) $ python manage.py runserver
为什么?为什么我在第一种情况下需要导出应用程序,但在第二种情况下我不需要?
答案 0 :(得分:2)
首先,Django和Flask是不同的框架。没有理由为什么启动它们的命令应该是相同的。
您需要导出FLASK_APP
以告知烧瓶要运行哪个应用。
如果您使用django-admin
命令,则需要以类似的方式导出DJANGO_SETTINGS_MODULE
:
$ export DJANGO_SETTINGS_MODULE=yourproject.settings
$ django-admin runserver
然而,对于Django,您通常使用runserver
代替manage.py
代替django-admin
。 manage.py
特定于您的项目,并设置DJANGO_SETTINGS_MODULE
环境变量(如果尚未设置):
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")
因此,在使用DJANGO_SETTINGS_MODULE
时,您不需要导出manage.py
。
答案 1 :(得分:1)
问题:当您在控制台中编写命令flask run
时,flask如何知道要运行哪个文件?
解决方案:那就是为什么我们使用export FLASK_APP=microblog.py
它将FLASK_APP(内部烧瓶变量)值设置为microblog.py
当您通过flask run
命令运行flask时,它会告诉flask使用microblog.py作为应用程序的启动文件。
如果您决定不这样做,则在运行flask run
时,flask无法知道要运行哪个文件。现在,您可以使用python filename.py
而不是flask run
所以python microblog.py
是您的情况。
答案 2 :(得分:1)
从源代码的角度来看,似乎FLASK_APP变量用于了解哪个烧瓶应用程序在“ multi-flask-app”环境中运行。
仅当源中的app_name
不存在时才需要。
FLASK_APP env变量仅用于flask框架的cli.py文件的find_best_app
方法中。
答案 3 :(得分:1)
仅在您的项目中,除非需要环境变量,否则不需要export FLASK_APP = microblog.py之类的东西
from flask import jsonify,Flask
app = Flask(__name__)
@app.route("/<Your Route>/<string:<Your Param>>")
def main(<Your Param>):
//DO LOGIC HERE
data =[{'TestData1' : "" ,<YOUR OUTPUT>}]
return jsonify(data), 200
app.run(debug=False,host="0.0.0.0",port=<PORT YOU WANT TO HOST>)