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、手把…...
JAVA电子合同电子签名系统如何解决骑缝章问题
在JAVA电子合同电子签名系统中,解决骑缝章问题需要结合数字签名技术、图像处理算法以及法律合规性设计,确保骑缝章的防伪性、完整性和法律效力。以下是具体解决方案:一、骑缝章的核心需求与挑战骑缝章(全称骑缝签章)是…...
学Simulink——基于Simulink的单位功率因数(UPF)整流控制策略
目录 手把手教你学Simulink ——基于Simulink的单位功率因数(UPF)整流控制策略 一、问题背景 二、UPF 控制原理 1. 功率因数定义 2. dq 坐标系下的解耦控制 三、系统架构 四、Simulink 建模步骤 第一步:搭建主电路 第二步:实现锁相环(PLL) 第三步:坐标变换 第…...
跨平台办公利器:OpenOffice在Linux与Windows系统的高效部署指南
1. 为什么选择OpenOffice作为跨平台办公方案 作为一个在多个操作系统环境下折腾过办公软件的老手,我强烈推荐OpenOffice作为跨平台办公的首选工具。它最大的优势就是完全免费开源,而且对Linux和Windows系统都有完美支持。我最早接触OpenOffice是在2013年…...
2026年10款高效AI写小说软件全面测评,快速解决卡文与大纲难题(含实测体验)
经常有新人问我:现在ai写小说到底靠不靠谱?是不是生成的都是没有感情的机器味? 说实话,前两年我觉得不行,但到了2026年,如果你还不会用AI辅助,真的会比别人慢半个身位。从灵感枯竭到大纲崩坏&a…...
ONNX Runtime性能优化:InferenceSession.run函数的高效使用技巧
1. ONNX Runtime与InferenceSession.run函数基础 ONNX Runtime是一个高性能的推理引擎,专门用于部署ONNX格式的机器学习模型。在实际应用中,模型的推理性能往往直接影响整个系统的响应速度和资源利用率。而InferenceSession.run函数正是这个过程中的核心…...
OpenClaw定时任务实战:gemma-3-12b-it每日凌晨自动备份重要文件
OpenClaw定时任务实战:gemma-3-12b-it每日凌晨自动备份重要文件 1. 为什么需要自动化文件备份 上周我的移动硬盘突然罢工,导致三个月的工作文档险些丢失。这次事故让我意识到:人工备份永远存在疏漏。即使设置了日历提醒,也难免因…...
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势
Flutter相机开发避坑指南:CameraPreview全屏适配的正确姿势 第一次在Flutter中集成相机功能时,我信心满满地给CameraPreview设置了屏幕宽高,结果看到的画面像被强行拉长的橡皮筋——人脸变成了马脸,圆形变成了椭圆。这种新手必踩的…...
如何高效提取PDF表格数据?Tabula的非典型使用指南
如何高效提取PDF表格数据?Tabula的非典型使用指南 【免费下载链接】tabula Tabula is a tool for liberating data tables trapped inside PDF files 项目地址: https://gitcode.com/gh_mirrors/ta/tabula 在数字化办公中,PDF文件常被用作数据交换…...
【Matlab Simulink】从Excel到2-D Lookup Table:数据导入与模型搭建实战
1. 为什么需要将Excel数据导入2-D Lookup Table 在工程建模和仿真过程中,我们经常会遇到需要处理二维表格数据的情况。比如在汽车发动机建模时,发动机的扭矩特性通常以转速和油门开度为输入,输出扭矩值的二维表格形式存在。这类数据通常保存在…...
终极E-Hentai漫画下载指南:一键批量保存你的数字收藏
终极E-Hentai漫画下载指南:一键批量保存你的数字收藏 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 你是否曾在E-Hentai上发现心仪的漫画,却为…...
