Django和Bad Request(400)

时间:2014-08-18 06:52:49

标签: django bad-request

我创建了新的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的问题?有没有办法追踪错误?

4 个答案:

答案 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正常工作。