Python 教程之 Django(10)模板

简介: Python 教程之 Django(10)模板

模板是 Django MVT 结构的第三个也是最重要的部分。Django中的模板基本上是用HTML,CSS和Javascript编写在.html文件中的。Django框架有效地处理和生成对最终用户可见的动态HTML网页。Django主要使用后端,因此,为了提供前端并为我们的网站提供布局,我们使用模板。根据我们的需求,有两种方法可以将模板添加到我们的网站。

我们可以使用单个模板目录,该目录将分布在整个项目中。

对于我们项目的每个应用程序,我们可以创建一个不同的模板目录。

对于我们当前的项目,为了简单起见,我们将创建一个将分布在整个项目中的单个模板目录。应用级模板通常用于大型项目,或者我们希望为网页的每个组件提供不同的布局。

配置

Django模板可以在app_name/设置中配置.py,

TEMPLATES = [
  {
    # 要使用的模板后端
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    # 模板目录
    'DIRS': [],
    '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',
      ],
    },
  },
]

使用 Django 模板

如何使用示例项目在 Django 中使用模板的插图。模板不仅显示静态数据,还显示通过上下文字典连接到应用程序的不同数据库的数据。考虑一个名为极客forgeeks的项目,它有一个名为极客的应用程序。

要呈现模板,需要一个视图和一个映射到该视图的URL。让我们首先在极客/视图中创建一个视图.py,

# 从 django 导入 Http 响应
from django.shortcuts import render
# 创建函数
def geeks_view(request):
  # 创建字典以将数据传递到模板
  context ={
    "data":"Gfg is the best",
    "list":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  }
  # 使用模板和上下文返回响应
  return render(request, "geeks.html", context)

现在我们需要映射一个URL来呈现这个视图,

from django.urls import path
from .views import geeks_view
urlpatterns = [
  path('', geeks_view),
]

最后在 templates/geeks.html 中创建一个模板,

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Homepage</title>
</head>
<body>
  <h1>Welcome to haiyong.site</h1>
<p> Data is {{ data }}</p>
  <h4>List is </h4>
  <ul>
  {% for i in list %}
  <li>{{ i }}</li>
  {% endfor %}
</body>
</html>

Django 模板语言

这是Django模板提供的最重要的设施之一。Django模板是使用Django模板语言标记的文本文档或Python字符串。模板引擎可以识别和解释某些构造。主要的是变量和标签。正如我们在上面的示例中用于循环一样,我们将其用作标记。同样,我们可以使用各种其他条件,例如如果,否则,如果-否则,空等。Django模板语言的主要特征是变量,标签,过滤器和评论。

变量

变量从上下文中输出一个值,该值是一个类似于字典的对象,它将键映射到值。我们从视图发送的上下文对象可以使用Django模板的变量在模板中访问。

语法

{{ variable_name }}

示例

变量被 {{ 和 }} 括起来,如下所示:

My first name is {{ first_name }}. My last name is {{ last_name }}.

在上下文 {'first_name: “hai”、“last_name”: “yong”} 的情况下,此模板将呈现为:

My first name is hai. My last name is yong.

标签

标记在呈现过程中提供任意逻辑。例如,标记可以输出内容,用作控制结构,例如“if”语句或“for”循环,从数据库中获取内容,甚至允许访问其他模板标记。

语法

{% tag_name %}

标记由 {% 和 %} 括起来,如下所示:

{% csrf_token %}

大多数标签接受参数,例如:

{% cycle 'odd' 'even' %}
  常用标签  
Comment cycle extends
if for loop for … empty loop
BooleanOperators firstof include
lorem now url

过滤 器

Django模板引擎提供用于转换变量和标签参数值的过滤器。我们已经讨论了主要的Django模板标签。标签不能修改变量的值,而过滤器可用于增加变量的值或根据自己的需要修改变量的值。

语法

{{ variable_name | filter_name }}

过滤器可以“链接”。一个筛选器的输出将应用于下一个筛选器。{{ text|scape|换行 }} 是一种常用的习语,用于转义文本内容,然后将换行符转换为

标记。

perl

{{ value | length }}

如果值为  ['a'、'b'、'c'、'd'] ,则输出将为 4

  主要模板过滤器  
add addslashes capfirst
center cut date
default dictsort divisibleby
escape filesizefodivisible byrmat first
join last length
line numbers lower make_list
random slice slugify
time timesince title
unordered_list upper wordcount

评论

模板忽略 {% 注释 %} 和 {% 结束注释 %} 之间的所有内容。可以在第一个 标记中插入一个可选注释。例如,这在注释掉代码以记录代码被禁用的原因时很有用。

语法

erlang

{% comment 'comment_name' %}
{% endcomment %}

例:

sql

{% comment "Optional note" %}
    Commented out text with {{ create_date|date:"c" }}
{% endcomment %}

模板继承

Django模板引擎中最强大,因此最复杂的部分是模板继承。模板继承允许您构建一个基本的“骨架”模板,其中包含站点的所有公共元素,并定义子模板可以覆盖的块。扩展标签用于在 Django 中继承模板。需要一遍又一遍地重复相同的代码。使用扩展,我们可以继承模板和变量。

语法

javascript

{% extends 'template_name.html' %}

示例 :

假定以下目录结构:

arduino

dir1/
    template.html
    base2.html
    my/
        base3.html
base1.html

在模板.html中,以下路径将有效:

{% extends "./base2.html" %}
{% extends "../base1.html" %}
{% extends "./my/base3.html" %}


目录
相关文章
|
1月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
17天前
|
SQL 关系型数据库 MySQL
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
98 9
|
24天前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
46 8
|
26天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
[Python]Django模板的配置及其语法(二)
[Python]Django模板的配置及其语法(二)
[Python]Django模板的配置及其语法(二)
|
安全 Python
[Python]Django模板的配置及其语法(一)
[Python]Django模板的配置及其语法
|
Python
Python:Jinja2模板语法整理
Python:Jinja2模板语法整理
106 0
|
Web App开发 索引 Python
python 模板中的语法
python 模板中的语法
3020 0
|
19天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。