我在这里很绝望。我不明白为什么Django看不到环境变量,即使shell可以。
在settings.py
BASE_URL = os.getenv('VUE_APP_WEB_URL','http://127.0.0.1:8080/')在admin.py
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中
VUE_APP_WEB_URL=http://my.url.xyz/服务器已多次重新启动,Gunicorn也已由sudo service gunicorn restart重新启动。

它仍然显示默认值,而不是ENV VAR。
现在,当我在django shell中测试它时
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:浏览器缓存不是问题。
发布于 2021-11-12 14:46:00
在您的(最好是根目录)中创建一个.env文件,然后将您的gunicorn.service配置配置为指向该文件。
创建一个.env文件
VUE_APP_WEB_URL= 'http://my.url.xyz/'
ANOTHER_VARIABLE = 'something'然后将EnvironmentFile添加到配置中
...
[Service]
...
EnvironmentFile=/path/to/your/.env
ExecStart=
... 您也可以使用pip install django-dotenv,它也将查找.env并初始化它。
https://stackoverflow.com/questions/69943805
复制相似问题