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

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基础之模板

一.前言 前面我们讲了视图&#xff0c;我们今天来讲一下模板&#xff0c;模板其实也就是视图中render返回的html进行的渲染&#xff0c;然后展示到浏览器页面上去&#xff0c;那我们今天就来和大家来说一下模板的基本用法 二.寻找html模板 这个也就是我们前面说了的找html&a…...

RabbitMQ Work Queues (工作队列模式) 使用案例

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;RabbitMQ &#x1f4da;本系列文章为个人学…...

C#高级:Winform桌面开发中TreeView的基础例子

一、方案一&#xff1a;免递归使用树 namespace WinFormsApp1 {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 自定义树实体/// </summary>public class WinFormTree{/// <summary>/// 标签名称/// </summ…...

大模型的文件有哪些?

在大模型仓库&#xff08;如Hugging Face&#xff09;中&#xff0c;例如&#xff1a;https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files&#xff0c;通常会发现以下几类文件&#xff1a; 模型权重文件&#xff1a;存储训练好的模型参数&#xff0c;是模型推理和微调…...

QT 国际化(翻译)

QT国际化&#xff08;Internationalization&#xff0c;简称I18N&#xff09;是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。这使得软件能够在不同的国家和地区使用&#xff0c;并且可以根据用户的语言和地区提供本地化的使用体验。…...

C 进阶 — 指针的使用

C 进阶 — 指针的使用 主要内容 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数组的指针 8、 回调函数 9、指针和数组练习题 前节回顾 1、指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一…...

【经验分享】容器云运维的知识点

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…...

MFC学习笔记专栏开篇语

MFC&#xff0c;是一个英文简写&#xff0c;全称为 Microsoft Foundation Class Library&#xff0c;中文翻译为微软基础类库。它是微软开发的一套C类库&#xff0c;是面向对象的函数库。 微软开发它&#xff0c;是为了给程序员提供方便&#xff0c;减少程序员的工作量。如果没…...

电子科技大学《高级算法设计与分析》期末复习问题汇总(客观题-选择题、判断题)

电子科技大学《高级算法设计与分析》问题汇总_已知背包问题的动态规划算法时间复杂度为o(nw),其中n为物品数目,w为背包容量。请-CSDN博客 转载自上面这个链接&#xff0c;古希腊掌管成电专业课的神&#xff01;&#xff01;为了防止他的链接失效&#xff0c;自己也转存一份 &…...

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与大数据的深度结合:驱动决策的革命性力量

引言&#xff1a;数字时代的决策挑战 在这个信息爆炸的数字时代&#xff0c;数据早已渗透到我们生活的方方面面。全球每天产生的数据量呈指数级增长&#xff0c;无论是用户的消费行为、设备的运行状态&#xff0c;还是社会热点的实时动态&#xff0c;这些信息的规模和复杂性前所…...

Java多线程与线程池技术详解(九)

面对苦难的态度&#xff1a;《病隙碎笔》“不断的苦难才是不断地需要信心的原因&#xff0c;这是信心的原则&#xff0c;不可稍有更动。” 孤独与心灵的成长&#xff1a;《我与地坛》“孤独的心必是充盈的心&#xff0c;充盈得要流溢出来要冲涌出去&#xff0c;便渴望有人呼应他…...

【常考前端面试题总结】---2025

React fiber架构 1.为什么会出现 React fiber 架构? React 15 Stack Reconciler 是通过递归更新子组件 。由于递归执行&#xff0c;所以更新一旦开始&#xff0c;中途就无法中断。当层级很深时&#xff0c;递归更新时间超过了 16ms&#xff0c;用户交互就会卡顿。对于特别庞…...

什么是大语言模型(LLM)

1. 什么是大语言模型&#xff08;LLM&#xff09;&#xff1f; LLM 是一种基础模型&#xff08;Foundation Model&#xff09;的实例。 基础模型的特点&#xff1a; 使用大量未标注的自监督数据进行预训练。通过学习数据中的模式&#xff0c;生成具有普适性和可适应性的输出…...

柚坛工具箱Uotan Toolbox适配鸿蒙,刷机体验再升级

想要探索智能设备的无限可能&#xff1f;Uotan Toolbox&#xff08;柚坛工具箱&#xff09;将是您的得力助手。这款采用C#语言打造的创新型开源工具箱&#xff0c;以其独特的设计理念和全面的功能支持&#xff0c;正在改变着用户与移动设备互动的方式。 作为一款面向专业用户的…...

supervisor使用详解

参考文章&#xff1a; Supervisor使用详解 Supervisor 是一个用 Python 编写的客户端/服务器系统&#xff0c;它允许用户在类 UNIX 操作系统&#xff08;如 Linux&#xff09;上监控和控制进程。Supervisor 并不是一个分布式调度框架&#xff0c;而是一个进程管理工具&#x…...

win11电源设置在哪里?控制面板在哪里?如何关闭快速启动?

不知道微软咋想的&#xff0c;从win10&#xff08;win8&#xff09;开始搞事情&#xff0c;想把windows娱乐化。 娱乐化的特点就是只照顾傻子不考虑专家&#xff0c;系统设置统统藏起来&#xff0c;开机即用——也只能那么用。 搞两套界面做不到吗&#xff1f; win11非常头疼的…...

【论文阅读笔记】One Diffusion to Generate Them All

One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper&#xff1a;https://arxiv.org/abs/2411.16318 Code&#xff1a;https://github.com/lehduong/onediffusion Authors&#xff1…...

SpringCloud和Nacos的基础知识和使用

1.什么是SpringCloud ​ 什么是微服务&#xff1f; ​ 假如我们需要搭建一个网上购物系统&#xff0c;那么我们需要哪些功能呢&#xff1f;商品中心、订单中心和客户中心等。 ​ 当业务功能较少时&#xff0c;我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...

人工智能技术的深度解析与推广【人工智能的应用场景】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…...

md5sum -c

md5sum -c xxx 命令用于验证文件的 MD5 校验和是否匹配。具体来说&#xff0c;-c 选项告诉 md5sum 命令去读取指定文件&#xff08;通常是一个包含 MD5 校验和的文件&#xff09;&#xff0c;并与实际文件的 MD5 校验和进行比较。 工作原理&#xff1a; 生成校验和文件&#x…...

excel使用笔记

1.工作表1计算工作表2某列的和 假设我们有两个工作表&#xff0c;分别命名为“Sheet1”和“Sheet2”&#xff0c;我们想要求和这两个工作表中A1到A**单元格的数据&#xff0c;可以在任意一个工作表的单元格中输入以下公式&#xff1a; SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…...

keepalived+nginx实现web高可用

目录 高可用集群搭建 Keepalived&#xff0b;nginx实现web高可用 一.节点规划 二.基础准备 1.修改主机名 2.关闭防火墙和selinux服务 三.用keepalived配置高可用 1.安装nginx服务 2.修改nginx配置文件 3.启动nginx 4.访问nginx 5.安装keepalived服务 6.编辑配置文件…...

边界层气象:脉动量预报方程展开 | 湍流脉动速度方差预报方程 | 平均湍流动能收支方程推导

写成分量形式 原始式子&#xff1a; ∂ u i ′ ∂ t u ‾ j ∂ u i ′ ∂ x j u j ′ ∂ u ‾ i ∂ x j u j ′ ∂ u i ′ ∂ x j − 1 ρ ‾ ⋅ ∂ p ′ ∂ x i g θ v ′ θ ‾ v δ i 3 f ϵ i j 3 u j ′ v ∂ 2 u i ′ ∂ x j 2 ∂ ( u i ′ u j ′ ‾ ) ∂ x j…...

TOSUN同星TsMaster使用入门——2、使用TS发送报文,使用graphics分析数据等

在第一章里面已经介绍了关于同星工程的创建和最基础的总线分析&#xff0c;接下来看看怎么使用TS发送报文以及图形化分析数据。 目录 一、使用Graphics分析报文信号/变量&#xff08;对标CANoe Graphics&#xff09; 二、使用数值窗口统计信号值/变量 三、使用TS发送报文 3…...

【操作系统】实验七:显示进程列表

实验7 显示进程列表 练习目的&#xff1a;编写一个模块&#xff0c;将它作为Linux内核空间的扩展来执行&#xff0c;并报告模块加载时内核的当前进程信息&#xff0c;进一步了解用户空间和内核空间的概念。 7.1 进程 进程是任何多道程序设计的操作系统中的基本概念。为了管理…...

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …...

JavaScript ES6+ 语法速通

一、ES6 基础语法 1. let 和 const 声明变量 let&#xff1a;块级作用域&#xff0c;可以重新赋值。const&#xff1a;块级作用域&#xff0c;声明常量&#xff0c;不能重新赋值。 let name Li Hua; name Li Ming; // 可修改const age 21; // age 22; // 报错&#xff0…...

移动端h5自适应rem适配最佳方案

网页开发中&#xff0c;我们常用的单位有如下几个&#xff1a; px&#xff1a;像素固定&#xff0c;无法适配各分辨率的移动设备em: 该单位受父容器影响&#xff0c;大小为父元素的倍数rem: 因为html根元素大小为16px&#xff0c;所以默认 1rem 16px&#xff0c;rem只受根元素…...

2024年使用 Cython 加速 Python 的一些简单步骤

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 文章有点长,期望您能坚持看…...