Ser*_*hii -3 python django flask
我不明白为什么要运行Flask应用程序
(venv) $ export FLASK_APP=microblog.py
(venv) $ flask run
Run Code Online (Sandbox Code Playgroud)
但是如果我想运行Django应用程序,我只会
(venv) $ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
没有export DJANGO_APP=microblog.py
为什么?为什么在第一种情况下我需要导出应用程序,但在第二种情况下我不需要?
首先,Django和Flask是不同的框架。没有理由为什么启动它们的命令应该相同。
您需要导出FLASK_APP 以告知flask运行哪个应用程序。
这样做export FLASK_APP=microblog.py将环境变量FLASK_APP。然后,flask应用程序可以从环境中读取此变量,并使用它来运行该应用程序。
在Python中,您可以从访问环境变量os.environ,或使用os.getenv方法:
import os
flask_app = os.getenv('FLASK_APP')
Run Code Online (Sandbox Code Playgroud)
如果使用django-admin命令,则需要以DJANGO_SETTINGS_MODULE类似的方式导出:
$ export DJANGO_SETTINGS_MODULE=yourproject.settings
$ django-admin runserver
Run Code Online (Sandbox Code Playgroud)
但是,对于Django,通常使用runserverwith manage.py代替django-admin。该manage.py是具体到项目,并设置DJANGO_SETTINGS_MODULE环境变量,如果它没有被设置已经:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")
Run Code Online (Sandbox Code Playgroud)
因此DJANGO_SETTINGS_MODULE,使用时无需导出manage.py。
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |