【问题标题】:Difference between run the Flask and Django application运行 Flask 和 Django 应用程序的区别
【发布时间】:2018-02-27 14:23:20
【问题描述】:

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

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

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

(venv) $ python manage.py runserver

没有export DJANGO_APP=microblog.py
为什么?为什么我在第一种情况下需要导出应用程序,而在第二种情况下我不需要?

【问题讨论】:

    标签: python django flask


    【解决方案1】:

    首先,Django 和 Flask 是不同的框架。没有理由启动它们的命令应该相同。

    你需要导出FLASK_APPto tell flask which app to run

    执行export FLASK_APP=microblog.py 设置环境变量FLASK_APP。然后flask 应用程序可以从环境中读取此变量并使用它来运行应用程序。

    在 Python 中,您可以从 os.environ 访问环境变量,或使用 os.getenv 方法:

    import os
    flask_app = os.getenv('FLASK_APP')
    

    如果使用django-admin命令,需要用类似的方式导出DJANGO_SETTINGS_MODULE

    $ export DJANGO_SETTINGS_MODULE=yourproject.settings
    $ django-admin runserver
    

    但是对于 Django,您通常使用 runservermanage.py 而不是 django-adminmanage.py 特定于您的项目,如果尚未设置 DJANGO_SETTINGS_MODULE 环境变量,则设置它:

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")
    

    因此在使用manage.py时不需要导出DJANGO_SETTINGS_MODULE

    【讨论】:

      【解决方案2】:

      从源代码的角度来看,FLASK_APP 变量似乎用于了解哪个烧瓶应用程序在“多烧瓶应用程序”环境中运行。

      仅当源中的app_name 不存在时才需要。

      FLASK_APP 环境变量仅用于flask 框架的cli.py 文件的find_best_app 方法。

      【讨论】:

        【解决方案3】:

        只需在您的项目中,您不需要 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>)  
        

        【讨论】:

          【解决方案4】:

          问题:当你在控制台写命令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 在你的情况下。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-15
            • 1970-01-01
            • 2016-01-19
            • 1970-01-01
            • 2020-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多