首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django (Gunicorn)没有看到ENV在生产中,但是Django-shell看到了。

Django (Gunicorn)没有看到ENV在生产中,但是Django-shell看到了。
EN

Stack Overflow用户
提问于 2021-11-12 13:39:59
回答 1查看 638关注 0票数 0

我在这里很绝望。我不明白为什么Django看不到环境变量,即使shell可以。

settings.py

代码语言:javascript
复制
BASE_URL = os.getenv('VUE_APP_WEB_URL','http://127.0.0.1:8080/')

admin.py

代码语言:javascript
复制
class _UserAdmin...
    ...
    list_display = ('username', 'email', 'is_staff', '_set_pwd_url','base_url')
    list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')

    def base_url(self, obj: User):
        return settings.BASE_URL

/etc/environment

代码语言:javascript
复制
VUE_APP_WEB_URL=http://my.url.xyz/

服务器已多次重新启动,Gunicorn也已由sudo service gunicorn restart重新启动。

它仍然显示默认值,而不是ENV VAR。

现在,当我在django shell中测试它时

代码语言:javascript
复制
Python 3.8.10 (default, Sep 28 2021, 16:10:42) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> settings.BASE_URL
'http://my.url.xyz/'
>>> 

怎么一回事?

PS:浏览器缓存不是问题。

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 14:46:00

在您的(最好是根目录)中创建一个.env文件,然后将您的gunicorn.service配置配置为指向该文件。

创建一个.env文件

代码语言:javascript
复制
VUE_APP_WEB_URL= 'http://my.url.xyz/'
ANOTHER_VARIABLE = 'something'

然后将EnvironmentFile添加到配置中

代码语言:javascript
复制
...

[Service]  
...
EnvironmentFile=/path/to/your/.env
ExecStart=
...            

您也可以使用pip install django-dotenv,它也将查找.env并初始化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69943805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档