当前位置: 首页 > news >正文

Django学习笔记五:templates使用详解

Django的模板系统是一个强大的工具,用于将动态数据渲染到HTML页面中。以下是Django模板系统的详细用法:

模板的基本概念

Django模板使用一个特殊的语法来插入变量、标签和过滤器。

创建模板

  1. 创建模板目录:在你的Django应用中创建一个名为templates的目录。
  2. 编写模板文件:在templates目录中创建HTML文件,文件扩展名通常为.html

模板继承

Django模板支持继承,这意味着你可以创建一个基础模板,并允许其他模板继承它。

<!-- base.html -->
<html>
<head><title>{% block title %}My Site{% endblock %}</title>
</head>
<body>{% block content %}{% endblock %}
</body>
</html>
<!-- child.html -->
{% extends "base.html" %}{% block title %}Home Page{% endblock %}{% block content %}<h1>Welcome to my site!</h1>
{% endblock %}

变量

在模板中,变量用{{ variable }}表示。

<p>Hello, {{ name }}!</p>

标签

Django模板提供了许多内置标签,例如for循环、if条件语句等。

{% if user.is_authenticated %}<p>Welcome, {{ user.username }}!</p>
{% else %}<p>Welcome, guest!</p>
{% endif %}

过滤器

过滤器可以被用来修改变量的输出。过滤器使用|符号。

{{ article.pub_date|date:"Y-m-d" }}

自定义过滤器

你可以创建自己的过滤器,并在模板中使用它们。

# 在应用的模板tags目录中创建一个自定义过滤器
from django import templateregister = template.Library()@register.filter(name='my_filter')
def my_filter(value):return value.upper()

然后在模板中使用:

{{ my_variable|my_filter }}

模板标签

模板标签用于执行特定的逻辑。

{% for article in articles %}<p>{{ article.title }}</p>
{% endfor %}

模板中的URL

在模板中,你可以使用url标签来生成URL。

<a href="{% url 'view_name' arg %}">Link</a>

注释

在模板中,你可以使用{# ... #}来添加注释。

{# 这是一个注释 #}

静态文件

在模板中,你可以使用{% static %}标签来引用静态文件。

<link rel="stylesheet" href="{% static 'css/style.css' %}">

模板上下文

在视图中,你可以传递一个上下文字典给模板。

from django.shortcuts import renderdef my_view(request):return render(request, 'my_template.html', {'name': 'Kimi'})

模板字符串

你可以在模板中使用模板字符串来创建动态内容。

{% with name="Kimi" %}<p>Hello, {{ name }}!</p>
{% endwith %}

模板中的表单

Django模板提供了表单渲染的标签,例如form标签和form.as_p

<form method="post">{% csrf_token %}{{ form.as_p }}<button type="submit">Submit</button>
</form>

模板中的静态方法

在模板中,你可以使用{{ form.field.label_tag }}来渲染字段的标签。

模板中的循环

你可以在模板中使用for循环来迭代数据。

<ul>{% for item in items %}<li>{{ item.name }}</li>{% endfor %}
</ul>

模板中的条件

你可以在模板中使用if标签来执行条件逻辑。

{% if user.is_authenticated %}<p>Welcome back, {{ user.username }}!</p>
{% else %}<p>Please log in.</p>
{% endif %}

模板中的注释

你可以在模板中使用{# ... #}来添加注释。

{# 这是一个注释 #}

模板中的URL反向解析

你可以使用url标签来生成URL。

<a href="{% url 'view_name' arg %}">Link</a>

模板中的静态文件

你可以使用static标签来引用静态文件。

<link rel="stylesheet" href="{% static 'css/style.css' %}">

模板中的自定义标签和过滤器

你可以创建自定义标签和过滤器,并在模板中使用它们。

模板中的模板

你可以在一个模板中包含另一个模板。

{% include "sidebar.html" %}

模板中的转义字符

在模板中,你可以使用{{ variable|escape }}来转义HTML。

模板中的缓存

你可以使用{% cache %}标签来缓存模板的部分内容。

{% cache 500 sidebar %}<!-- 缓存的内容 -->
{% endcache %}

通过这些基本的用法,你可以创建动态且功能丰富的Web页面。

相关文章:

Django学习笔记五:templates使用详解

Django的模板系统是一个强大的工具&#xff0c;用于将动态数据渲染到HTML页面中。以下是Django模板系统的详细用法&#xff1a; 模板的基本概念 Django模板使用一个特殊的语法来插入变量、标签和过滤器。 创建模板 创建模板目录&#xff1a;在你的Django应用中创建一个名为…...

PriorityQueue分析

概述 PriorityQueue&#xff0c;优先级队列&#xff0c;一种特殊的队列&#xff0c;作用是能保证每次取出的元素都是队列中权值最小的&#xff08;Java的优先队列每次取最小元素&#xff0c;C的优先队列每次取最大元素&#xff09;。元素大小的评判可以通过元素本身的自然顺序…...

Hive数仓操作(六)

一、 Hive 分区表 Hive 的分区表通过在 HDFS 中以不同的目录存储不同的分区数据&#xff0c;来提高查询性能并减少数据扫描量。分区表可以根据特定的列&#xff08;如 性别 列的男/女&#xff09;将数据划分为多个部分&#xff0c;使得查询时只需要扫描相关的分区&#xff0c;…...

centos7安装配置python3环境

1、wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz 2、安装python依赖环境 切换到root用户&#xff0c;然后执行下面命令&#xff1a; 3、安装gcc&#xff0c;用于后续安装Python时编译源码&#xff1a; yum install gcc -y 4、安装Python3相关依赖&#…...

用 LoRA 微调 Stable Diffusion:拆开炼丹炉,动手实现你的第一次 AI 绘画

总得拆开炼丹炉看看是什么样的。这篇文章将带你从代码层面一步步实现 AI 文本生成图像&#xff08;Text-to-Image&#xff09;中的 LoRA 微调过程&#xff0c;你将&#xff1a; 了解 Trigger Words&#xff08;触发词&#xff09;到底是什么&#xff0c;以及它们如何影响生成结…...

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告)

手机实时提取SIM卡打电话的信令声音-(题外、插播一条广告) 前言 在去年的差不多这个时候&#xff0c;我们做了一遍外置配件的选型&#xff0c;筛选过滤了一批USB蓝牙配件和type-c转usb的模块。详情可参考《外置配件的电商价格和下载链接的选型.docx》一文&#xff1a;蓝牙电话…...

Linux基于CentOS学习【进程状态】【进程优先级】【调度与切换】【进程挂起】【进程饥饿】

目录 进程状态 状态决定了什么 进程等待方式——队列 进程状态的表现 挂起状态 基于阻塞的挂起——阻塞挂起 swap分区 进程状态表示 Z僵尸状态 进程的优先级 什么是进程的优先级 为什么会有进程的优先级 进程饥饿 Linux的调度与切换 切换 调度 queue [ 140 ]&am…...

Golang | Leetcode Golang题解之第456题132模式

题目&#xff1a; 题解&#xff1a; func find132pattern(nums []int) bool {candidateI, candidateJ : []int{-nums[0]}, []int{-nums[0]}for _, v : range nums[1:] {idxI : sort.SearchInts(candidateI, 1-v)idxJ : sort.SearchInts(candidateJ, -v)if idxI < idxJ {ret…...

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序

回归预测|基于哈里斯鹰优化最小二乘支持向量机的数据回归预测Matlab程序HHO-LSSVM 多特征输入单输出含基础程序 文章目录 一、基本原理一、基本原理二、HHO-LSSVM的流程三、优缺点四、应用场景 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 HHO-LSSVM回归预测结…...

【Android 源码分析】Activity生命周期之onStop-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

【Unity】本地化实现

个人向笔记。 1 前言 记录一下自己的本地化实现思路&#xff0c;暂时只讲本文的本地化实现。 2 文本本地化方案-个人 本地化实现是基于Luban的。自己使用Luban实现了一个“配置表模块”&#xff0c;又实现了一个“全局配置模块”&#xff0c;之后再基于这两个模块实现了“文本…...

Django一分钟:在Django中怎么存储树形结构的数据,DRF校验递归嵌套模型的替代方案

引言 在开发过程中我们可能需要这样的树形结构: [{"data": {"name": "牛奶"},"children": [{"data": {"name": "蒙牛"}, },{"data": {"name": "伊利"}, }]},{"da…...

【Docker从入门到进阶】06.常见问题与解决方案 07.总结与资源

6. 常见问题与解决方案 在使用Docker进行开发和部署过程中&#xff0c;可能会遇到各种问题。以下是一些常见问题及其解决方案&#xff1a; 容器启动失败和调试 在使用 Docker 时&#xff0c;容器启动失败或立即退出可能会导致一定的困扰&#xff0c;以下是进一步深入解决该问…...

快速排序的非递归实现:借助栈实现、借助队列实现

目录 用栈实现快速排序 1.用栈实现非递归快速排序的思路步骤 1.1.思路步骤 2.用栈实现非递归快速排序的代码 3.用栈实现非递归快速排序的整个工程 3.1.QuickSortNonR.h 3.2.QuickSortNonR.c 3.3.Stack.h 3.4.Stack.c 用队列实现非递归快速排序 1.用队列实现非递归快…...

Finops成本优化企业实践-可视化篇

引言&#xff1a;上一章讨论了finops的一些方法论&#xff0c;笔者在拿到finops官方认证finops-engineer certificate之后&#xff0c;将方法论运用到所在项目组中&#xff0c;并于今年完成了40%的费用节省。在此将这些实践方法总结沉淀&#xff0c;与大家分享。实践包括三篇&a…...

Spring Boot中线程池使用

说明&#xff1a;在一些场景&#xff0c;如导入数据&#xff0c;批量插入数据库&#xff0c;使用常规方法&#xff0c;需要等待较长时间&#xff0c;而使用线程池可以提高效率。本文介绍如何在Spring Boot中使用线程池来批量插入数据。 搭建环境 首先&#xff0c;创建一个Spr…...

Python机器学习:自然语言处理、计算机视觉与强化学习

&#x1f4d8; Python机器学习&#xff1a;自然语言处理、计算机视觉与强化学习 目录 ✨ 自然语言处理&#xff08;NLP&#xff09; 文本预处理&#xff1a;分词、去停用词词向量与文本分类&#xff1a;使用Word2Vec与BERT &#x1f306; 计算机视觉基础 图像预处理与增强目标…...

Vue2 + ElementUI + axios + VueRouter入门

之前没有pc端开发基础&#xff0c;工作需要使用若依框架进行了一年的前端开发.最近看到一个视频框架一步步集成&#xff0c;感觉颇受启发&#xff0c;在此记录一下学习心得。视频链接:vue2element ui 快速入门 环境搭建和依赖安装 安装nodejs安装Vue Cli使用vue create proje…...

GO网络编程(四):海量用户通信系统2:登录功能核心【重难点】

目录 一、C/S详细通信流程图二、消息类型定义与json标签1. 消息类型定义2. JSON标签3.结构体示例及其 JSON 表示&#xff1a;4.完整代码与使用说明 三、客户端发送消息1. 连接到服务器2. 准备发送消息3. 创建 LoginMes 并序列化4. 将序列化后的数据嵌入消息结构5. 序列化整个 M…...

某项目实战分析代码二

某项目实战分析代码二 此次分析的是protobuf的使用操作流程具体实现 3. 业务数据分析3.1 客户端3.2 服务器端简单案例 此次分析的是protobuf的使用 Protocol Buffer( 简称 Protobuf) 是Google公司内部的混合语言数据标准&#xff0c;它是一种轻便高效的结构化数据存储格式&…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...