0

我有一个 Django 项目,并且工作正常,但不显示默认主页。

我知道,您必须添加一个 url 模式来显示但这并不是我要问的。

通常,如果你创建一个 Django 项目,Django 会为你提供一个类似的默认网页Django 2 默认主页

您可以通过在 'project.urls' 中添加 '/' 的 url 模式来更改它,如下所示:

urlpatterns = [
...
url(r'^$', wellcomeView, name='wellcomeView'),
...
]

但通常情况下,Django 必须显示此默认主页,而您不更改 url 模式或设置中的任何内容。

所以这是我的问题:我没有更改设置或网址中的任何内容,但是在迁移后,它停止显示默认页面。 什么事情会导致这种情况?

这是我的场景:

1-我创建了一个 Django 2.2.7 项目(一切正常)

2- 已创建的应用程序、模型。但现在意见

3-迁移,创建数据库,测试模型。仍然没有任何视图,但显示默认主页。

4- 一次又一次地改变模型,并且每次都迁移。(但仍然没有视图,也没有更改设置或网址,只在默认管理页面中查找。也仍然显示默认主页。)

5- 更改模型并迁移它们而不更改设置或 URL 中的任何内容。但仍然一切正常。

6- 迁移后,突然 Django 停止提供默认主页。并抛出这样的 404 错误: Django 404 错误无意义。

7-为什么?我知道,这不是问题,我将创建一个视图并为使用此视图的“/”添加一个 url 模式,所以这不会是一个问题。但是我只是想知道,为什么 Django 停止服务这个?

我进行了搜索,但找不到对这种行为的任何好的解释。所以要求只学习'Why',否则我知道如何在 '/' 地址显示视图。

4

1 回答 1

0

您将在控制此行为的源代码的逻辑中找到解释:

if (not tried or (                  # empty URLconf
    request.path == '/' and
    len(tried) == 1 and             # default URLconf
    len(tried[0]) == 1 and
    getattr(tried[0][0], 'app_name', '') == getattr(tried[0][0], 'namespace', '') == 'admin'
)):
    return default_urlconf(request)

具体来说,“安装成功”视图仅在以下情况下加载:

  • 您处于调试模式;
  • 您正在访问根 URL ( /);
  • 您的 URL 配置为空,或者其中只有一个条目,并且该条目是/admin/您启动新项目时自动生成的默认条目。

在您的情况下,您已在 URL 配置(evrak/规则)中添加了一些内容,因此不满足这些条件。

于 2020-02-27T03:29:09.840 回答