当我们的Django项目中包含大量的模版文件时,为了更方便地组织和管理,我们可以使用模版的子目录。同时,Django中的include标签也提供了一种方便的方式来引入模版,可以在模版中多次引用一个模版文件,从而减少代码的重复。
以下是关于在Django中使用模版的子目录和include标签的详细步骤:
1. 配置settings.py
Django默认情况下将会在项目中的templates目录下查找模版文件,如果您需要使用模版的子目录,需要将这些子目录的路径添加到Django的TEMPLATES选项中。可以在settings.py文件中进行如下配置:
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates', 'templates/includes'], # 添加子目录路径
'APP_DIRS': True,
'OPTIONS': {},
},
]
上述代码中,我们添加了名为 includes
的子目录,其中包含了一些在主模版中经常使用的代码片段。此外,我们还需要在主模版中使用 include
标签引入这些代码片段。
2. 创建模版
在 templates
目录下创建一个名为 base.html
的模版文件作为主模版。然后在 templates/includes
目录下创建一个名为 header.html
的模版文件作为示例使用模版。
2.1 创建主模版
<!-- templates/base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% include 'includes/header.html' %} <!-- 引入子模版 -->
<div class="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
在上述代码中,我们在主模版中使用 {% include 'includes/header.html' %}
来引入子模版 header.html
。这将会在 content
块之前展示一个固定的头部。
2.2 创建子模版
<!-- templates/includes/header.html -->
<header>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
</header>
在上述代码中,我们创建了一个简单的头部导航栏作为示例的内容。
3. 在视图中使用模版
接下来在视图中使用主模版。可以使用Django自带的 TemplateView
来呈现主模版文件:
# views.py
from django.views.generic import TemplateView
class HomePageView(TemplateView):
template_name = 'base.html'
在上述代码中,我们使用 TemplateView
来展示主模版文件 base.html
。在这个视图中,我们可以通过复写 get_context_data()
方法来向主模版中传入一些数据:
# views.py
from django.views.generic import TemplateView
class HomePageView(TemplateView):
template_name = 'base.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Welcome to My Site'
return context
在上述代码中,我们向模版中传入了一个变量 title
,可以在主模版中使用 {% block title %}{{ title }}{% endblock %}
来展示它。
4. 运行项目
最后,在浏览器中访问我们的网站,可以看到我们的主模版已经成功的展示了子模版的内容,同时传入了我们设置的变量 title
。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django中模版的子目录与include标签的使用方法 - Python技术站