运行Flask和Django应用程序

时间:2018-02-27 14:23:20

标签: python django flask

我不明白为什么如果我想运行Flask应用程序我需要

pswd

但如果我想运行Django应用程序我只

(venv) $ export FLASK_APP=microblog.py
(venv) $ flask run

没有(venv) $ python manage.py runserver
为什么?为什么我在第一种情况下需要导出应用程序,但在第二种情况下我不需要?

4 个答案:

答案 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-adminmanage.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>)