我正在做一些小课程“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”作为主体内容,但什么都没有。
3条答案
按热度按时间pbpqsu0x1#
你的内容应该在这里
在base.html中
还要确保contact.html位于以模板中的项目命名的文件夹中
gc0ot86w2#
在基本模板中有“replace me”。它应该在
contact.html
文件中。基本上,父模板中的标签之间的内容会被子模板中的标签之间的内容替换。在您的例子中,子模板中的标签之间没有任何内容,因此您什么也看不到。
rryofs0p3#
根据你所写的,输出是正确的。
从这里的docs
定义可由子模板替代的块。
在您的基本HTML中,您已经注册了一个名为内容的模板标记块,其中包含'replace me'
扩展基本的html你有另一个文件。
在这个文件中,一个名为content的模板标记被注册在其中,没有写入任何内容。
只要有一个与标签块名匹配的块(这里是名为'content'的块标签),父文件(base.html)中的内容将被替换为子文件(contact.html)中的内容。
这里,父文件包含“replace me”,子文件包含“”。因此,“replace me”被替换为“”。
如果你的联系我html是这样的东西
基本文件中的内容(替换我)将被替换为“这是显示联系信息的联系页面”