Django 模板简介
介绍
在 Django MTV 模型中,模板是表示层。该层与用户交互,将请求发送到视图,并响应用户。
Django 模板处理 HTML/CSS/JS。所有渲染都在模板中处理。除了 HTML/CSS/JS 的基本构造之外,Django 还附带模板语言,以模板的形式呈现动态数据。在本指南中,您将了解 Django 模板和构建 Django 应用程序所需的语言构造。
为什么选择 Django 模板
Django 模板是使用 Django 模板语言标记的文本文档或 Python 字符串。Django 将逻辑和代码与设计分开。必须知道的是,Django 模板不包含嵌入到 HTML 中的 Python 代码。
Django 模板遵循 DRY(不要重复自己)设计原则,要求开发人员在设计 Django 应用程序时不要重复。Django 模板还采用了其他几个概念,例如模板继承、标签、变量、过滤器、注释等。
模板配置
要配置 Django 模板系统,请转到settings.py文件并将DIRS更新为 templates 文件夹的路径。通常,templates文件夹是在manage.py所在的示例目录中创建和保存的。此 templates 文件夹包含您将在不同的 Django 应用中创建的所有模板。
import os
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',
],
},
},
]
或者,您可以为每个应用单独维护一个模板文件夹。如果您为每个应用单独维护模板,则无需更新settings.py中的DIRS。确保您的应用已添加到settings.py中的INSTALLED_APPS中。
Django 模板语言
在Django模板语言中,语法涉及四个主要构造。
1.变量
变量输出上下文中的值。上下文通常是从视图传递过来的类似字典的对象(将变量名与其相应的值进行映射)。
基本语法是:
{{ variable_name }}
例如,如果您渲染如下所示的上下文集...
from django.shortcuts import render
def my_view(request):
context = {
"author": "Gaurav Singhal",
"website": {
"domain": "https://pluralsight.com",
"views": 200
},
"odds": [1, 3, 5]
}
return render(request, "index.html", context)
...您可以在模板index.html中按如下方式访问它:
{{author}}
{{website.domain}}
{{website.views}}
2. 标签
标签为模板语言提供逻辑,以便逻辑地呈现内容。
基本语法是:
{% tag_name %}
例子:
{% if user.is_authenticated %}Howdy, {{ user.username }}, How are you {% endif %}
模板中使用了多个标签,其中一些是:
如果/否则:
{% if condition %} renders if body {% else %} renders else body {% endif %}
For loop
{% for odd in odds %} {{odd}} {% endfor %}
include
This is used to load a template and render it to the current context. It is very useful for creating several components separately, such as navbar, footer, etc., and then including them in several templates.
{% include template_name %}
- 堵塞
这定义了要被子模板覆盖的块。当我们讨论模板继承时,您将对块有更好的了解。
{% block content %}
{% endblock %}
您可以在Django 文档中阅读有关内置标签的更多信息。
3. 过滤器
过滤器用于转换变量和标签参数的值。
它可以用作:
{{ my_variable | filter }}
例如:
{{ my_date|date:"Y-m-d" }}
您可以在Django 文档中阅读有关过滤器和几个内置过滤器的更多信息。
4. 评论
您可以轻松地在 Django 模板中添加注释:
{# Comment here. It won't be rendered #}
模板继承
Django 模板引擎最强大的部分之一是模板继承。这允许您构建一个包含所有基本/通用元素的基本骨架模板,并在扩展基本模板后在子/派生模板中定义块。在实践中更容易理解。让我们首先创建一个base.html。
<html>
<head>
<title>
{% block title %}Base title{% endblock %}
</title>
{% comment %} This Bootsrap css is added to all pages {% endcomment %}
<link rel="stylesheet" href = "https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css">
</head>
<body>
<p>
Body content which remains in all the pages
</p>
{% block content %}
Body content
{% endblock %}
</body>
</html>
现在创建一个子模板并将其保存为index.html。
{% extends 'base.html' %}
{% block title %}
This is index title
{% endblock title %}
{% block content %}
Main content of index.html
{% endblock content %}
现在,当您从视图呈现index.html时,您将获得以下输出:
Body content which remains in all the pages
Main content of index.html
结论
Django 模板负责将信息从 Django 视图传递到浏览器,被视为动态 Django 应用程序的基本构建块。您可以参考 Django 文档来深入了解Django 模板。
了解更多
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~