谁生成django欢迎页面的默认页面?

时间:2013-02-19 06:51:38

标签: django python-2.7

我只是设置了django环境,正如教程所说。我输入了python manager.py runserver,它告诉我打开127.0.0.1:8000。当我打开它时,它可以使用正确的欢迎页面。

但这是我的问题:谁生成这个默认的欢迎页面?由于没有views.pyurls.py页面为空。

5 个答案:

答案 0 :(得分:4)

如果你的urls.py为空(因为没有包含匹配网址的模式)并且Django处于调试模式(在settings.py中为DEBUG = True),那么Django会重新启动你正在看到的那个页面。

您可以在此处的代码中看到它:https://github.com/django/django/blob/master/django/views/debug.py#L1062-L1110

答案 1 :(得分:3)

查看django/core/handlers/base.pydjango/views/debug.py。简而言之,如果django获得404,如果你没有设置任何路由,那么在base.py

if settings.DEBUG:
    from django.views import debug
    response = debug.technical_404_response(request, e)

在debug.py中查看technical_404_responseempty_urlconf

答案 2 :(得分:0)

如果有人想找回(或重复使用),则只需将debug.default_urlconf视图添加到您的urls

…
from django.views import debug
…

urlpatterns = [
    …
    path('', debug.default_urlconf),
    …
]

答案 3 :(得分:0)

我遇到了同样的问题。 我做了什么,而不是 127.0.0.1:8000 我写的是 127.0.0.1:8000/hello/。 你好是我项目中的应用

答案 4 :(得分:0)

免责声明:我使用的是 django 版本:3.2.5,在旧版本中文件内容可能会有所不同)

您第一次运行 django 网络应用程序时看到的默认登录页面是“default_urlconf.html”。这是 django 添加的防坠落机制,而不是在没有任何默认 url/路由的情况下给出 404 错误。

当您第一次使用 django-admin startproject <project_name> 之类的命令或使用任何 IDE 菜单控件(例如“Pycharm 专业人士”)创建 django 网站时,您将获得以下文件夹结构。此外,Debug 在您的 setting.py 文件中设置为 True (DEBUG = True)

enter image description here

此外, 当未设置路由或 url.py 中的 url 映射为空时,django 框架将通过其错误处理代码提供默认路由。 这就像当您尝试访问/请求 http://127.0.0.1:8000/ django 时检查该 url 是否存在(404)以及调试模式是否处于活动状态。该请求通过各种 *.py 文件(如 base.pyhandlers.pyexceptions.py)进行遍历,最后到达 debug.py。所有这些文件都随虚拟环境或在您(在您的项目中安装 django)时提供。

最终,从“exception.py”通过方法**debug.technical_404_response(request, exc)**

进入“debug.py”
def response_for_exception(request, exc):
    if isinstance(exc, Http404):
        if settings.DEBUG:
            response = debug.technical_404_response(request, exc)
        else:
            response = get_exception_response(request, get_resolver(get_urlconf()), 404, exc)

最后感觉 debug.pydef technical_404_response(request, exception) 调用 def default_urlconf(request) 并最终返回默认 html 页面的响应(default_urlconf.html ) 你在屏幕上看到的

def default_urlconf(request):
    """Create an empty URLconf 404 error response."""
    with Path(CURRENT_DIR, 'templates', 'default_urlconf.html').open(encoding='utf-8') as fh:
        t = DEBUG_ENGINE.from_string(fh.read())
    c = Context({
        'version': get_docs_version(),
    })

    return HttpResponse(t.render(c), content_type='text/html')

enter image description here

文件位置:

  • exception.py: venv/Lib/site-packages/django/core/handlers/exception.py

  • debug.py:venv/Lib/site-packages/django/views/debug.py

  • default_urlconf.html : venv/Lib/site-packages/django/views/templates/default_urlconf.html