6

Windows 7
Python 2.7.3
Django 1.5
python manage.py runserver

我正在关注“ https://docs.djangoproject.com/en/1.5/intro/tutorial03/ ”中提供的教程

在 settings.py 中使用 DEBUG=True 可以正确生成网页。地址

http://127.0.0.1:8000/admin/  

显示管理员登录页面。

http://127.0.0.1:8000/polls/  

显示“怎么了?” 项目符号链接。

http://127.0.0.1:8000/polls/1/  

显示数字“1”

http://127.0.0.1:8000/polls/2/  

显示标准 404 消息。但是,如果我设置 DEBUG=False (并且什么都不做),那么我在所有地址都会收到 500 错误!我正在使用开发内部运行服务器。没有回溯错误。服务器日志如下所示:

使用 DEBUG=True

0 errors found  
March 19, 2013 - 12:01:12  
Django version 1.5, using settings 'mysite.settings'  
Development server is running at http://127.0.0.1:8000/  
Quit the server with CTRL-BREAK.  
[19/Mar/2013 12:06:41] "GET /admin/ HTTP/1.1" 200 1893  
[19/Mar/2013 12:54:55] "GET /polls/ HTTP/1.1" 200 74  
[19/Mar/2013 12:55:02] "GET /polls/2/ HTTP/1.1" 404 1577  
[19/Mar/2013 12:55:09] "GET /polls/1/ HTTP/1.1" 200 1  
Validating models...  

使用 DEBUG=False

0 errors found  
March 19, 2013 - 12:55:21  
Django version 1.5, using settings 'mysite.settings'  
Development server is running at http://127.0.0.1:8000/  
Quit the server with CTRL-BREAK. 
[19/Mar/2013 12:59:22] "GET /admin/ HTTP/1.1" 500 27  
[19/Mar/2013 12:59:25] "GET /polls/ HTTP/1.1" 500 27  
[19/Mar/2013 12:59:28] "GET /polls/1/ HTTP/1.1" 500 27  
[19/Mar/2013 12:59:34] "GET /polls/2/ HTTP/1.1" 500 27  

我的目录结构如下:

1> mysite  
2>     - mysite  
3>     - polls  
4>         - templates  
5>             - polls  
6>     - templates  
7>         - admin  

我的“manage.py”是@ 1>,所以我知道我必须在以下文件和位置中进行编辑。

@2>settings.py
@2>urls.py

但是:
A. 我目前没有'view.py' 文件@ 2>,这会是一个新文件吗?遵循教程后,我目前有一个 'view.py' @ 3>;
B. '404.html' 应该进入@2> 下的新模板目录还是两个现有模板目录之一(@4> 或@6>)?我假设自定义的“500.html”会进入同一个目录。

我很乐意发布更多您想要查看的代码。

4

5 回答 5

10

很可能,您忘记ALLOWED_HOSTS设置文件中进行设置。

于 2013-03-19T12:09:52.460 回答
5

我之前遇到过同样的问题,我可以通过在模板目录中创建 404.html 来解决这个问题,指定有效的 ALLOWED_HOSTS 并重新启动我的网络服务器

于 2013-03-20T20:34:30.807 回答
4

假设您的 django 项目名为 mysite,我遇到了类似的问题,并且能够用最少的代码修复它:

# mysite/mysite/settings.py
DEBUG = False
ALLOWED_HOSTS = ['localhost']
# Tells your project to find your custom 404.html at mysite/mysite/templates/404.html
INSTALLED_APPS = (..., 'tutorial', ...)

# mysite/mysite/urls.py
handler404 = 'tutorial.views.custom_404'

# mysite/mysite/views.py
from django.shortcuts import render

def custom_404(request):
    return render(request, '404.html', {}, status=404)

# mysite/mysite/templates/404.html
<h1>CUSTOM 404 PAGE</h1>

不要忘记重新启动服务器。=P


目录结构应如下所示:

mysite  
    - mysite
        - settings.py
        - urls.py
        - views.py
        - templates
            - 404.html  
    - polls  
        - templates  
            - polls
于 2013-03-20T20:58:47.790 回答
0

尝试像这样运行服务器

python manage.py runserver localhost:8000

如果您希望它从所有地址工作

python manage.py runserver 0.0.0.0:8000

于 2014-07-04T05:20:37.777 回答
0

以下是我的情况:

  • 我刚刚在我的模板中添加了一个 404.html
  • 我也做过python manage.py collectstatic --noinput

它为我解决了错误。

于 2019-09-21T14:37:28.013 回答