[英]Django Cookiecutter
我正在尝试在Digital Ocean服务器上使用Cookiecutter。 (不使用Docker)
我按照说明在Django,Postgres和Gunicorn上的Ubuntu 16上进行安装。 https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04
我无法摆脱允许的主机错误。
DisallowedHost at /
Invalid HTTP_HOST header: '128.199.100.100:8000'.
You may need to add '128.199.100.100' to ALLOWED_HOSTS
我在production.py中有设置
ALLOWED_HOSTS = env.list ( 'DJANGO_ALLOWED_HOSTS',
default = [ '128.199.100.100' ] )
我是否需要更改任何设置以使其成为生产环境?
Cookiecutter网站上的唯一文档是有关pythonAnywere和Docker的。 http://cookiecutter-django.readthedocs.io/en/latest/deployment-on-pythonanywhere.html
我只想要一个简单的DO安装。 找不到任何文档?
谢谢。
在此阶段,您需要将'128.199.100.100:8000'
(包括端口)添加到ALLOWED_HOSTS
。 您可以在runserver
命令中将其设置为环境变量:
ALLOWED_HOSTS = env.list ( 'DJANGO_ALLOWED_HOSTS',
default = [ '128.199.100.100', '128.199.100.100:8000' ] )
或者,您可以将其临时添加到设置中的default
。
DJANGO_ALLOWED_HOSTS=128.199.100.100:8000 ~/myproject/manage.py runserver 0.0.0.0:8000
最终,本教程将更改gunicorn以使用套接字文件,并且您将使用Nginx访问端口80上的网站,因此您的ALLOWED_HOSTS
不需要'128.199.100.100:8000'
。
我有类似的问题,我相信我找到了解决方案。
如果您正在使用传递DJANGO_ALLOWED_HOST值(部署时复制凭证的最安全方法)的环境变量。
然后仔细查看定义主机允许的IP地址列表的语法。 环境变量的语法与Django环境变量的语法完全不同,这让我感到困惑。
首先,我使用python语法定义了DJANGO_ALLOWED_HOSTS
export DJANGO_ALLOWED_HOSTS="['localhost', '127.0.0.1', '192.168.1.110']"
在“设置”部分下查看错误消息跟踪时,这是完全不正确的,我得到以下ALLOWED_HOSTS值
ALLOWED_HOSTS ["['localhost',", "' 127.0.0.1'"," ' 192.168.1.110']"
这只是意味着在假设语法完全不同的情况下解析变量。 将django设置设置为以逗号分隔的字符串也无法解决问题
export DJANGO_ALLOWED_HOSTS="localhost, 127.0.0.1, 192.168.1.110"
解析结果为以下注意事项,空格字符位于第二和第三个元素中。
ALLOWED_HOSTS ['localhost', ' 127.0.0.1', ' 192.168.1.110']
似乎解析地址值的逻辑非常特殊,并且是仅使用逗号作为分隔符列出几台主机的唯一正确方法。
export DJANGO_ALLOWED_HOSTS="localhost,127.0.0.1,192.168.1.110"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.