Django基础之模板
一.前言
前面我们讲了视图,我们今天来讲一下模板,模板其实也就是视图中render返回的html进行的渲染,然后展示到浏览器页面上去,那我们今天就来和大家来说一下模板的基本用法
二.寻找html模板
这个也就是我们前面说了的找html,前面已经说过了,我这里再说一遍
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',
],
},
},
]

优先去项目根目录 > 每个已注册的app的templates目录找。
如何选择:
简单的项目,模板都放在根目录。
复杂的项目,模板放在各自的app中,公共部分放在templates目录。
三.模板处理的本质
要学习模板我们就得先知道模板处理的本质和模板的基本用法
本质就是渲染完成后,生成字符串展示在页面上

基本用法就是在视图里面返回一个字典,html里面用{{}}引入想要的名字再进行替换,但是这里有一个要注意的是,他替换是对文本进行完整替换(并不会带上引号),这里举个例子大家就知道了

当我们想弹出名字的时候,这时候我们打开浏览器发现没有弹出,我们点开检查

发现他说往日情怀酿作酒没有定义,我们再看看这个html怎么个回事

发现他并没有把引号加上去,他这个是对内容进行完整替换,而不会加上引号,如果我们要带上引号

这样我们进去就有弹框拉
但是当我们导入一个js的时候


我们发现,js里的内容并没有被渲染,这是因为浏览器加载后先渲染html的内容,再来加载js,此时并不能起到渲染作用,所以引入js中需要注意,如果我们非得在js中使用返回的内容,可以通过在html的script标签定义window全局变量,在js中使用全局变量,或者在js中使用ajax请求来获取数据,这里就不和大家具体说了
四.常用语法
这里就给出代码和注释,方便大家使用
from django.shortcuts import render
from django.shortcuts import render, HttpResponse,redirect
from django.urls import reverse
from django.http import JsonResponse
from django.views import Viewclass Person(object):def __init__(self,name,age):self.name=nameself.age=agedef getdata(self):return '我是一个人类'def getname():return '往日情怀酿作酒'def show(request):return render(request,'web/login.html',{'n1':'往日情怀酿作酒','n2':['请关注','感谢','收藏'],'n3':{'name':'往日情怀酿作酒','age':'20','hobby':'play coomputer'},'n4':[{'id':1,'name':'Mr.3','age':18},{'id':2,'name':'Mr.2','age':18},{'id':3,'name':'Mr.2','age':18}],'n5':Person('Mr.7',28),'n6':getname})
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title></head>
<body>{#n1直接写#}
<h1>{{ n1 }}</h1>
<hr>{#n2是一个数组可以通过for循环遍历每一个值 取出来要加上.#}
<h1>{{ n2.1 }}</h1>
<ul>{% for i in n2 %}<li>{{ i }}</li>{% endfor %}
</ul>
<hr>{#n3是一个字典,如果不加上item,那么就只能去到键,取值也要用.#}
<ul>{% for k,v in n3.items %}<li>{{ k }}={{ v }}</li>{% endfor %}
</ul>
<hr>{#n4是一个列表嵌套着字典,这种可以制作一个表格#}
<table border="1">{% for i in n4 %}<tr><td>{{ i.id }}</td><td>{{ i.name }}</td><td>{{ i.age }}</td></tr>{% endfor %}
</table>
<hr>{#n5是一个类,也可以直接.他的属性和方法,并且函数不要加上括号#}
<h1>{{ n5.name }}</h1>
<h1>{{ n5.age }}</h1>
<h1>{{ n5.getdata }}</h1>
<hr>{#n6是一个函数,也可以直接执行,但是默认是不让传递参数#}
<h1>{{ n6 }}</h1>
<hr></body>
</html>

效果如上图,我们需要主义的点:
1.引用django字典返回的值需要再外面加上{{}}
2.字典和列表都是通过.来取值而不是通过[]
3.函数默认就是给执行了,我们在html里面不需要再加上括号,并且默认是不支持传递参数的
五.内置函数

常用的就这些,这些是django中自带的函数,默认都是不支持传递参数的,用的都很少,一会才是和大家说如何自定义函数并且支持传递参数
六.自定义模板函数
首先要确保我们的app是已经注册的,前面我们也已经注册了,接下来就是要创建一个目录名叫templatetags(名字一定要叫这个)
然后再创建再里面创建一个py文件,作为以后要导入的名字,py文件里面先要加上固定代码
from django import template register=template.Library()
这样我们就能够定义我们想要的函数了
6.1 filer
filter允许的参数是1-2个
可以发现我们把|前面的当成是第一个参数,函数名字后面:是第二个参数
6.2 simple_tag
simple_tag支持任意个参数

他的调用方式和filter不一样,他是{%%}和前面的load一样,他先写函数名,后面用空格间隔第一个参数,第二个参数等等
6.3 inclusion_tag
参数无限制,返回的是一个html片段
这个也是{%%}来调用
七.母版和继承
当我们写html的时候,发现有许多重复的地方,我们就可以把重复的地方写成母板,有需要的地方去继承就行了
我们用 block来隔离独立的内容,继承用extends关键字

通常我们都会继承一下js和css
八.模板的导入
通过include直接进行导入
九.总结
这里也都是讲了知识点,大家所见即所得,记得点赞关注收藏,不记得了记得来看吖
十.补充
下一期将和大家讲解一下中间件,期待大家的点赞关注加收藏
相关文章:
Django基础之模板
一.前言 前面我们讲了视图,我们今天来讲一下模板,模板其实也就是视图中render返回的html进行的渲染,然后展示到浏览器页面上去,那我们今天就来和大家来说一下模板的基本用法 二.寻找html模板 这个也就是我们前面说了的找html&a…...
RabbitMQ Work Queues (工作队列模式) 使用案例
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…...
C#高级:Winform桌面开发中TreeView的基础例子
一、方案一:免递归使用树 namespace WinFormsApp1 {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 自定义树实体/// </summary>public class WinFormTree{/// <summary>/// 标签名称/// </summ…...
大模型的文件有哪些?
在大模型仓库(如Hugging Face)中,例如:https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files,通常会发现以下几类文件: 模型权重文件:存储训练好的模型参数,是模型推理和微调…...
QT 国际化(翻译)
QT国际化(Internationalization,简称I18N)是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。这使得软件能够在不同的国家和地区使用,并且可以根据用户的语言和地区提供本地化的使用体验。…...
C 进阶 — 指针的使用
C 进阶 — 指针的使用 主要内容 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数组的指针 8、 回调函数 9、指针和数组练习题 前节回顾 1、指针就是个变量,用来存放地址,地址唯一…...
【经验分享】容器云运维的知识点
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…...
MFC学习笔记专栏开篇语
MFC,是一个英文简写,全称为 Microsoft Foundation Class Library,中文翻译为微软基础类库。它是微软开发的一套C类库,是面向对象的函数库。 微软开发它,是为了给程序员提供方便,减少程序员的工作量。如果没…...
电子科技大学《高级算法设计与分析》期末复习问题汇总(客观题-选择题、判断题)
电子科技大学《高级算法设计与分析》问题汇总_已知背包问题的动态规划算法时间复杂度为o(nw),其中n为物品数目,w为背包容量。请-CSDN博客 转载自上面这个链接,古希腊掌管成电专业课的神!!为了防止他的链接失效,自己也转存一份 &…...
GPTcelltype——scRNA-seq注释
#安装包 install.packages("openai") remotes::install_github("Winnie09/GPTCelltype") #填写API Sys.setenv(OPENAI_API_KEY your_openai_API_key) #加载包 #Load packages library(GPTCelltype) library(openai) #准备文件 #Assume you have already r…...
AI与大数据的深度结合:驱动决策的革命性力量
引言:数字时代的决策挑战 在这个信息爆炸的数字时代,数据早已渗透到我们生活的方方面面。全球每天产生的数据量呈指数级增长,无论是用户的消费行为、设备的运行状态,还是社会热点的实时动态,这些信息的规模和复杂性前所…...
Java多线程与线程池技术详解(九)
面对苦难的态度:《病隙碎笔》“不断的苦难才是不断地需要信心的原因,这是信心的原则,不可稍有更动。” 孤独与心灵的成长:《我与地坛》“孤独的心必是充盈的心,充盈得要流溢出来要冲涌出去,便渴望有人呼应他…...
【常考前端面试题总结】---2025
React fiber架构 1.为什么会出现 React fiber 架构? React 15 Stack Reconciler 是通过递归更新子组件 。由于递归执行,所以更新一旦开始,中途就无法中断。当层级很深时,递归更新时间超过了 16ms,用户交互就会卡顿。对于特别庞…...
什么是大语言模型(LLM)
1. 什么是大语言模型(LLM)? LLM 是一种基础模型(Foundation Model)的实例。 基础模型的特点: 使用大量未标注的自监督数据进行预训练。通过学习数据中的模式,生成具有普适性和可适应性的输出…...
柚坛工具箱Uotan Toolbox适配鸿蒙,刷机体验再升级
想要探索智能设备的无限可能?Uotan Toolbox(柚坛工具箱)将是您的得力助手。这款采用C#语言打造的创新型开源工具箱,以其独特的设计理念和全面的功能支持,正在改变着用户与移动设备互动的方式。 作为一款面向专业用户的…...
supervisor使用详解
参考文章: Supervisor使用详解 Supervisor 是一个用 Python 编写的客户端/服务器系统,它允许用户在类 UNIX 操作系统(如 Linux)上监控和控制进程。Supervisor 并不是一个分布式调度框架,而是一个进程管理工具&#x…...
win11电源设置在哪里?控制面板在哪里?如何关闭快速启动?
不知道微软咋想的,从win10(win8)开始搞事情,想把windows娱乐化。 娱乐化的特点就是只照顾傻子不考虑专家,系统设置统统藏起来,开机即用——也只能那么用。 搞两套界面做不到吗? win11非常头疼的…...
【论文阅读笔记】One Diffusion to Generate Them All
One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper:https://arxiv.org/abs/2411.16318 Code:https://github.com/lehduong/onediffusion Authors࿱…...
SpringCloud和Nacos的基础知识和使用
1.什么是SpringCloud 什么是微服务? 假如我们需要搭建一个网上购物系统,那么我们需要哪些功能呢?商品中心、订单中心和客户中心等。 当业务功能较少时,我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...
人工智能技术的深度解析与推广【人工智能的应用场景】
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
