django多个html模板,django二、模板详解(templates)——页面视图
django模板(templates)
在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MTV中V和T的解耦,VT有着N:M的关系,一个V可以调用任意T,一个T可以供任意V使用 模板处理分为两个过程 加载 渲染
加载静态配置文件
在settings.py中最底下有一个叫做static的文件夹,主要用来加载一些模板中用到的资源,提供给全局使用
这个静态文件主要用来配置css,html,图片,文字文件等
STATIC_URL = ‘/static/’
STATICFILES_DIRS = [
os.path.join(BASE_DIR, ‘static’)
]
只后在模板中,首先加载静态文件,之后调用静态,就不用写绝对全路径了
2. 使用静态配置文件
a) 加载渲染静态配置文件 模板中声明
{% load static %} 或者 {% load staticfiles %}
在引用资源的时候使用
{% static ‘xxx’ %} xxx就是相当于staticfiles_dirs的一个位置
b) 直接定义静态配置
其中: 展示static文件夹下有一个images文件夹,下面有一个mvc.png的图片
3. 模板摘要
3.1 模板主要有两个部分
HTML静态代码
动态插入的代码段(挖坑,填坑)也就是block
3.2 动态填充
模板中的动态代码断除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑 如下:
image.png
模板中的变量: 视图传递给模板的数据 标准标识符规则 语法 {{ var }} 如果变量不存在,则插入空字符串
3.3 模板重的点语法
对象.属性或者方法
索引 (student.0.name)
image.png
3.4模板中的小弊端
调用对象的方法,不能传递参数
3.5 模板的标签
语法 {% tag %}
作用 a)加载外部传入的变量
b)在输出中创建文本
c)控制循环或逻辑
4. if表达式
格式1:
{% if 表达式 %}
{% endif %}
格式2:
{% if表达式 %}
{% else %}
{% endif %}
格式3:
{% if表达式 %}
{% elif 表达式 %}
{% endif %}
image.png
5. for表达式
格式1:
{% for 变量 in 列表 %}
{% empty %}
{% endfor %}
image.png
注意:当列表为空或者不存在时,执行empty之后的语句
注意一下用法:
forloop是每个for循环都有的模板变量,这个变量有一些提示循环进度信息的属性。
forloop.counter 总是一个表示当前循环的执行次数的整数计数器
{{ forloop.counter }} 表示当前是第几次循环,从1开始
{{ forloop.counter0 }} 表示当前从第几次循环,从0开始
{{forloop.revcounter}}表示当前是第几次循环,倒着数数,到1停
{{forloop.revcounter0}}表示当前是第几次循环,倒着数数,到0停
{{forloop.first}}是否是第一个 布尔值
{{forloop.last}}是否是最后一个 布尔值
6. 注释
6.1 注释可见,可运行
6.1 单行注释注释不可见,不可运行
单行注释(页面源码中不会显示注释内容)
{# 被注释掉的内容 #}
6.2 多行注释注释不可见,不可运行
{% comment %}
{% endcomment %}
image.png
7. 过滤器
引入过滤器定义:{{var|过滤器}}, 作用:在变量显示前修改 过滤器有很多,比如add / lower / upper
7.1 加法
{{ p.page | add:5 }}
没有减法的过滤器,但是加法里面可以加负数
{{ p.page | add: -5 }}
7.2 修改大小写
lower / upper : {{ p.pname | lower }} 变为小写或者大写
7.3 传参数
过滤器可以传递参数,参数需要使用引号引起来。比如join: {{ student | join ‘=’ }} 如果值为空则设置默认值:
默认值:default,格式{{ var | default value }}
如果变量没有被提供或者为False,空,会使用默认值
7.4 定制日期格式
根据制定格式转换日期为字符串,处理时间的就是针对date进行的转换
{{dataVal | data: 'y-m-s h:m:s'}}
如果过滤器,定义为小写的y,则返回的数据为两位的年。如果写的是大写的Y,则返回的是四位的年
定义小写的m,则返回数字的月份,如果定义大写的M,则返回英文
定义小写的h,则返回12小时制度的时,如果定义的是大写的H,则返回24小时制度的时
7.5 是否转义
HTML转义: 将接收到的数据当成普通字符串处理还是当成HTML代码来渲染的一个问题 渲染成html: {{ code | safe }} 还可以使用autoscape渲染: {{ autoscape off }} {{ endautoscape }} 不渲染的话: {{ autoscape on }} {{ endautoscape }}
8. 运算
8.1 乘
{% widthratio 数 分母 分子 %}
如下例子: 求数学成绩的10倍的结果 {% widthratio 10 1 stu.stu_shuxue %}
8.2 整除
{{ num|divisibleby:2 }} 注意:该语句的意思是,判断num值是否能被2整除,如果能的话返回True,不能的话返回False
8.3 ifeuqal判断相等
{% ifequal value1 value2 %}
{% endifqueal %}
image.png
9. 反向解析
Url 反向解析 {% url ‘namespace:name’ p1 p2 %}
image.png
10. 跨站请求CSRF(Cross Site Request Forgery)
某些而已网站包含链接,表单,按钮,js利用登录用户在浏览器重的认证信息,进行非法操作,攻击服务,破坏数据
理解如下图:
image.png
在表单中添加 {% csrf_token %}
在settings中的中间件MIDDLEWARE中配置打开 ‘django.middleware.csrf.CsrfViewMiddleware’
11. 模板继承
11.1 block挖坑不用看了
关键字 block挖坑
{% block xxx %}
{% endblock %}
11.2 extends
extends 继承,写在开头位置
{% extends ‘父模板路径’%}
11.3 include
include 加载模型进行渲染
{% include ‘模板文件’%}
建议使用拓展extends
django多个html模板,django二、模板详解(templates)——页面视图相关推荐
- Django基础(35): 全局上下文处理器(Context Processors)详解及如何自定义模板上下文处理器...
Django的Context Processors的中文名字有很多种,有人翻译成文本处理器,也有人翻译成上下文处理器.小编最喜欢的翻译是全局上下文处理器,因为它的主要作用就是向模板传递需要全局使用的变 ...
- python语言的格式框架_django框架模板语言使用方法详解
本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...
- Django REST FRAMEWORK swagger(一)框架详解
Django REST FRAMEWORK swagger(一.框架详解) 一.Django REST SWAGGER框架图 具体见下图 二.说明 RESTFul说明 每一个URI代表一种资源: 客 ...
- php代码加固,织梦模板加固版教程详解
原标题:织梦模板加固版教程详解 我们的织梦模板怎么把它变成加固版,大家加固之前最好把原来的网站备份一下,以免操作错误造成损失. 第一步:登录网站后台把我们的网站备份数据库 网站后台点击 "系 ...
- spring boot模板引擎thymleaf用法详解
spring boot模板引擎thymleaf用法详解 Spring-boot支持FreeMarker.Thymeleaf.jsp.veocity 但是对freemarker和thymeleaf的支持 ...
- python 录制web视频_Python django框架 web端视频加密的实例详解
视频加密流程图: 后端获取保利威的视频播放授权token,提供接口api给前端 参考文档:http://dev.polyv.net/2019/videoproduct/v-api/v-api-play ...
- goland 方法注释_goland 设置注释模板的过程图文详解
网上找了一些办法 都没有说到关键点: 梳理一下设置步骤如下,以及避免的坑. 新建文件自动加注释: Preferences | Editor | File and Code Templates 打开go ...
- Django 模型层(models) 复杂查询详解
Django 模型层(models) 复杂查询详解 一般Django orm 和原生sql混合使用 1.测试文件 只单独测试django中的某一个py文件 不一定是tests.py 1.配置 在任意一 ...
- [深入浅出Cocoa]之消息(二)-详解动态方法决议(Dynamic Method Resolution)
[深入浅出Cocoa]之消息(二)-详解动态方法决议(Dynamic Method Resolution) 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循&quo ...
- ViewPager 详解(二)---详解四大函数
前言:上篇中我们讲解了如何快速实现了一个滑动页面,但问题在于,PageAdapter必须要重写的四个函数,它们都各有什么意义,在上节的函数内部为什么要这么实现,下面我们就结合Android的API说明 ...
最新文章
- Jenkins 插件 地址证书报错问题解决思路
- 对四方继保实施嵌入式Linux开发培训
- 04.openssl编程——哈希表
- pm2 start 带参数_3款有海景天窗的国产SUV,最适合带女朋友看星星,首付3万拿下...
- C++_一维数组案例_五只小猪称体重_案例元素逆置(调换)_案例冒泡排序---C++语言工作笔记020
- HDU 2895 贪心 还是 大水题
- java apns ssl错误_无法使用Javapns/Javaapns SSL握手失败发送推送通知
- 《大规模元搜索引擎技(1)》一 2.1 系统体系结构
- aspose转pdf乱码问题
- 魔兽世界插件开发-暴雪设计工具/命令
- java中new对象_java new对象的理解
- PCI、PCIe、PCI BIOS概念介绍
- 跨站请求伪造(CSRF)攻击
- Win10系统Ctrl键锁定无法使用解决方法
- h5py使用基础笔记
- Unity 打开摄像头
- 携职教育:四川2022年人力资源管理师考试报名通知
- MC34063芯片应用
- windows Redis设置密码和取消密码
- 阿里云服务器优惠怎么享受——阿里云合作伙伴的优势
热门文章
- 深圳市工业和信息化局5G产业发展扶持计划操作规程
- win7卸载avast杀毒软件的步骤--win10专业版
- 自制USB充电接口,手机不显示充电状态的原因
- 一份开源的果蝇算法C++源代码
- scikit-learn fetch_olivetti_faces人脸识别实例
- Android studio编译很久 Gradle Build Running特别慢问题解决
- 2007中国乒乓球公开赛预赛和半决赛
- PS平面设计教程nbsp;用ps如何制作…
- 大数据曝光了!80后年薪多少,才能摆脱中年危机?
- Github标星25K+超火的Java实战项目