Django块内容不工作- Cant似乎无法使它工作,即使在看了一些其他的解决方案

bwleehnv  于 2023-04-22  发布在  Go
关注(0)|答案(3)|浏览(116)

我正在做一些小课程“Django for beginners”,没有必要说我像一个超级初学者。我理解块内容和模板的概念。但由于一个奇怪的原因,我不能使块内容工作,因此,我基本上被卡住了。我在这个页面上看了很多类似的问题,但我想我真的错过了一些东西。
我有一个非常简单的基本HTML,保存在一个文件夹“模板”中

<!doctype html>
<html>
<head>
    <title>Base title</title>
    </head>
<body>
    {% block content %}
    replace me
    {% endblock %}
    </body>
</html>

我创建了一个联系人的html也保存在我的文件夹“模板”

{% extends 'base.html' %}

{% block content %}
{% endblock %}

在我的设置中,我定义了模板DIRS

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

我的urls.py是这样设置的

from django.contrib import admin
from django.urls import path

from Pages.views import home_view, contact_view, about_view, social_view

urlpatterns = [
    path('', home_view, name = 'home'),
    path('contact/', contact_view),
    path('about/', about_view),
    path('social/', social_view),
    path('admin/', admin.site.urls),
]

我知道联系人页面确实使用base.html页面,因为当我在chrome中打开联系人页面时,我的标题显示为base title,但我应该看到“replace me”作为主体内容,但什么都没有。

pbpqsu0x

pbpqsu0x1#

你的内容应该在这里

{% extends 'base.html' %}

{% block content %}
replace me
{% endblock %}

在base.html中

<!doctype html>
<html>
<head>
    <title>Base title</title>
    </head>
<body>
    {% block content %}
    {% endblock %}
    </body>
</html>

还要确保contact.html位于以模板中的项目命名的文件夹中

  • templates/“folder with project name”/contact.html *
gc0ot86w

gc0ot86w2#

在基本模板中有“replace me”。它应该在contact.html文件中。
基本上,父模板中的标签之间的内容会被子模板中的标签之间的内容替换。在您的例子中,子模板中的标签之间没有任何内容,因此您什么也看不到。

rryofs0p

rryofs0p3#

根据你所写的,输出是正确的。
从这里的docs
定义可由子模板替代的块。
在您的基本HTML中,您已经注册了一个名为内容的模板标记块,其中包含'replace me'

{% block content %}
replace me
{% endblock %}

扩展基本的html你有另一个文件。

{% extends 'base.html' %}

{% block content %}
{% endblock %}

在这个文件中,一个名为content的模板标记被注册在其中,没有写入任何内容。
只要有一个与标签块名匹配的块(这里是名为'content'的块标签),父文件(base.html)中的内容将被替换为子文件(contact.html)中的内容。
这里,父文件包含“replace me”,子文件包含“”。因此,“replace me”被替换为“”。
如果你的联系我html是这样的东西

{% extends 'base.html' %}

{% block content %}
This is the contact page which shows contact info
{% endblock %}

基本文件中的内容(替换我)将被替换为“这是显示联系信息的联系页面”

相关问题