繁体   English   中英

Django Cookiecutter

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM