我创建了新的django项目; 添加到我的settings.py:
DEBUG = False
ALLOWED_HOSTS= [
'localhost',
'my_site.com'
]
创建了应用test_view
;
将hello_world
添加到test_view.views
from django.http.response import HttpResponse
def hello_world(request):
return HttpResponse('Hello World!!!')
将测试路线添加到urls.py url(r'test/', 'test_view.views.hello_world')
;
修复/ etc / hosts
127.0.0.1 localhost my_site.com
现在,当我尝试访问http://my_site.com:8000/test/
时,django返回Bad Request(400)。但当url为http://localhost:8000/test/
时,我可以看到我的Hello World页面。什么可能是错的?
UPD:
与DEBUG = True
UPD2:
另一个工作主机名是ubuntu-virtualbox
(计算机名称)。
但即使我将计算机名称更改为my_site
,ubuntu-virtualbox仍然可用且my_site返回Bad Request (400)
可能是因为某些系统设置? (它在virtualbox中是干净的ubuntu)。 或者也许是virtualenv的问题?有没有办法追踪错误?
答案 0 :(得分:2)
看起来django可以查看请求是否未通过dns服务器传递。 bind9的安装和配置而不是/ etc / hosts中的更改解决了这个问题。
答案 1 :(得分:2)
这可能是一个糟糕的Cookie。尝试删除它们。
答案 2 :(得分:1)
您的主机文件中需要另一行。
127.0.0.1 localhost
127.0.0.1 my_site.com
然后在你的ALLOWED_HOSTS
...
ALLOWED_HOSTS = [
'localhost',
'.my_site.com', # not 'my_site.com'
]
另外,当您使用python manage.py runserver运行站点时,从虚拟机运行站点时,这可能很重要,运行它就像这样......
python manage.py runserver virtual.server.ip.address:8000
显然要替换“virtual.server.ip.address”'用那个虚拟机实际的ip地址。
答案 3 :(得分:0)
我打印*DEBUG = None*
,我的django正常工作。