首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HTTP_HOST解耦设置ALLOWED_HOSTS时出现无效python标头:'127.0.0.1:8000‘错误

使用HTTP_HOST解耦设置ALLOWED_HOSTS时出现无效python标头:'127.0.0.1:8000‘错误
EN

Stack Overflow用户
提问于 2018-03-01 19:44:05
回答 2查看 958关注 0票数 4

当我的settings.pyALLOWED_HOSTS = []时--服务器工作得很好。但是当我执行ALLOWED_HOSTS = config('ALLOWED_HOSTS')时-它给出了错误:

代码语言:javascript
复制
DisallowedHost at /admin/login/
Invalid HTTP_HOST header: '127.0.0.1:8000'. You may need to add '127.0.0.1' to ALLOWED_HOSTS.

但是,当我进入python shell时,我可以成功地导入ALLOWED_HOSTS -并且它会输出[],这是正确的值。

为什么我仍然得到这个错误的原因?

PS:configpython-decouple包的一个特性-用于存储敏感值。

EN

回答 2

Stack Overflow用户

发布于 2018-03-01 19:55:00

python-decouple readme建议您必须将ALLOWED_HOSTS转换为一个列表。它给出的例子是:

代码语言:javascript
复制
os.environ['ALLOWED_HOSTS'] = '.localhost, .herokuapp.com'
config('ALLOWED_HOSTS', cast=lambda v: [s.strip() for s in v.split(',')])

您似乎正在执行config('ALLOWED_HOSTS'),所以您的ALLOWED_HOSTS可能会被评估为字符串'[]',而不是空的列表[]

票数 3
EN

Stack Overflow用户

发布于 2018-03-01 21:12:16

在这种情况下,django需要一个ALLOWED_HOSTS格式的列表,但环境变量只是一个计划文本,您必须在使用它之前进行转换,幸运的是,python decouple有一个可选参数,名为cast

考虑以下.env文件:

.env

代码语言:javascript
复制
ALLOWED_HOSTS=127.0.0.1, .herokuapp.com
DEBUG=True
PORT=5403

要在您的setting.py中访问这些值,您必须导入util类Csv,它将转换列表中的计划字符串,但请注意在您的.env文件或环境变量中,不要忘记用逗号和空格(,)分隔这些值。对于不需要导入任何附加类的内置类型,可以使用int、str、bool...

setting.py

代码语言:javascript
复制
from decouple import config, Csv

ALLOWED_HOSTS = config('ALLOWED_HOSTS', default=[], cast=Csv())
DEBUG = config('DEBUG', default=False, cast=bool)
PORT= config('PORT', cast=int)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49049026

复制
相关文章

相似问题

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