我尝试将wagtail开发项目部署到digitalocean。有一次我在服务器上运行这个命令:
python manage.py collectstatic——settings=mysite.settings.production
我得到以下错误信息
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(",")
AttributeError: 'NoneType' object has no attribute 'split'
我遵循教程中的命令部署到DO
我尝试了不同类型的组合,有(',')和没有分割。IP/*/的组合或没有。然后我尝试了一个空wagtail项目,结果是相同的。
任何回报/帮助将是非常感激的。
错误信息中显示的行:
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(",")
是您(或其他人…)在某个时候放在设置文件中的东西,告诉它不要在设置中直接定义ALLOWED_HOSTS,而应该从djjango_allowed_hosts系统变量中拾取。您链接到的教程不包括此设置。
如果你想保留这个设置,那么你需要找出如何在DigitalOcean上设置环境变量-它可能与教程设置djjango_settings_module的方式相同。否则,您应该找到并删除这一行,只留下直接设置ALLOWED_HOSTS的一行:
ALLOWED_HOSTS = ['mydomain.example.com']
如果您的环境文件设置正确,下面将解决问题:
环境:
DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1]
Settings.py
ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '').split()
你最好了解一下Django settings模块的基本设置,上面的错误表明你没有将ALLOWED_HOSTS
设置为任何值,如果你只是在测试,你应该将其设置为["*"]
,否则,你将设置为你在这个项目/服务器上托管的主机名,如:
ALLOWED_HOSTS = ['domainname.com', 'domain2.net', 'www.domain.com']
只有,在这种情况下,python可以找到项并对其应用split方法,当然,当设置ALLOWED_HOSTS
中没有项时,意味着设置为None,并且NoneType
对象根本没有属性。