【问题标题】:Django is only extending the base.html template in 1 html fileDjango 仅在 1 个 html 文件中扩展 base.html 模板
【发布时间】:2021-03-23 08:23:01
【问题描述】:

我遇到了一个非常烦人的问题,几乎没有人可以解决。我已经浪费了几个小时,不幸的是我无法让它工作。这就是问题所在:

我正在尝试将 base.html 文件扩展为 2 个不同的 html 文件。出于某种原因,可以在 home.html 中扩展它,但不能在 pakbon.html 中。

您可以在下面看到我的文件夹结构(如果我将文件放在同一个文件夹中也不起作用):

下面你可以看到我的urls.py:

urlpatterns = [
path("", views.home, name="home"),
path("pakbon/", views.pakbon, name="pakbon")
]

下面你可以看到我的views.py:

def index(request):
return render(request, "main/base.html", {})

@login_required
def home(request):
    return render(request, "main/home.html", {})

def pakbon(request):
    return render(request, "pakbonsysteem/pakbon.html", {})

我的base.html:

<html lang="en">
<head>
--- Some HTML
</head>
<body data-background-color="{{info.mode}}">

--- Some HTML

    {% endfor %}
    {% if user.is_authenticated %}
        {% block content %}
        {% endblock %}
    {% else %}
        <meta http-equiv="refresh" content="0; url=/login">
    {% endif %}

</body>
</html>

我的主页.html:

{% extends 'main/base.html' %}

{% block content %}

--- Some HTML

{% endblock %}

我的 pakbon.html:

{% extends 'main/base.html' %}

{% block content %}

--- Some HTML code

{% endblock %}

来自 home.html 的图片:

来自 pakbon.html 的图片:

它们应该都显示相同的布局,只有 home.html 显示一个表格,pakbon.html 显示一个包含一些信息和 javascript 的 div,如上图所示。然而,这并没有发生。他只是没有在 pakbon.html 文件中扩展 base.html 文件。我也可以看到这一点,因为 javascript 也不起作用。经过几天的浪费,我无法弄清楚。如果有人可以帮助我,我会非常高兴。

【问题讨论】:

  • 尝试清除浏览器历史记录。
  • 还要看看你的 pakbon.html 中是否有错字:尤其是第一行 {% extends...
  • 尝试清除浏览器缓存。它在某些浏览器中经常发生。也尝试不同的浏览器。如果可行,则默认浏览器有问题。
  • @Nikz Jon,感谢您的留言,我已经多次清除缓存并尝试了各种浏览器(Firefox、Chrome、Edge、IE)。不幸的是,没有任何效果:(
  • @ha-neul,感谢您的留言,HTML 中没有一个错字。我还复制了 home.html 并将其粘贴到 pakbon.html 中。即使这样,它也不会扩展 base.html 文件。

标签: django django-views django-templates


【解决方案1】:

检查你的 settings.py 文件中的这个常量:

    TEMPLATES = [ 
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': ['abc/123',
                     'myfiles/foo/bar'],
            'APP_DIRS': True,
            # more stuff here
        }

]

确保带有 base.html 的文件夹在此处列出。

还可以尝试将 base.html 移动到另一个目录以查看它是否有效,而另一个则停止工作。这会给你一些洞察力。

【讨论】:

  • 感谢您的留言,我尝试了几个路径:'DIRS': ['main/templates', 'C:/Users/---/PycharmProjects/projecta/main/templates', str(BASE_DIR) + '/templates/', os.path.join(BASE_DIR, 'templates'), ], 不幸的是这也不起作用:(
【解决方案2】:

尝试将您的 pakbon.html 与 home.html 放在同一文件夹中。

看起来main 是您的app 之一。在这种情况下,你所有的 main 模板文件都应该驻留在

main ---> templates--> main.

django 将无法识别 main/templates 文件夹下的 pakbonsysteem 文件夹。它会寻找main/templates/main

当然,您需要更改在 views.py 中引用它的方式

'main/pakbon.html'

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2016-07-12
    • 2013-08-01
    • 2021-02-03
    • 2021-02-05
    • 2012-09-27
    相关资源
    最近更新 更多