django多个html模板,django二、模板详解(templates)——页面视图

本文详细介绍了Django框架中的模板机制,包括模板的加载渲染、静态资源配置,以及如何在模板中使用静态文件。重点讲解了模板语法,如变量、标签、过滤器、条件语句和循环,并探讨了模板继承和CSRF保护的重要性。同时,还提到了模板继承和include标签在提高代码复用性方面的作用。
摘要由CSDN通过智能技术生成

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) 直接定义静态配置

mvc.png

其中: 展示static文件夹下有一个images文件夹,下面有一个mvc.png的图片

3. 模板摘要

3.1 模板主要有两个部分

HTML静态代码

动态插入的代码段(挖坑,填坑)也就是block

3.2 动态填充

模板中的动态代码断除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑 如下:

b96d17251456

image.png

模板中的变量: 视图传递给模板的数据 标准标识符规则 语法 {{ var }} 如果变量不存在,则插入空字符串

3.3 模板重的点语法

对象.属性或者方法

索引 (student.0.name)

b96d17251456

image.png

3.4模板中的小弊端

调用对象的方法,不能传递参数

3.5 模板的标签

语法 {% tag %}

作用 a)加载外部传入的变量

b)在输出中创建文本

c)控制循环或逻辑

4. if表达式

格式1:

{% if 表达式 %}

{% endif %}

格式2:

{% if表达式 %}

{% else %}

{% endif %}

格式3:

{% if表达式 %}

{% elif 表达式 %}

{% endif %}

b96d17251456

image.png

5. for表达式

格式1:

{% for 变量 in 列表 %}

{% empty %}

{% endfor %}

b96d17251456

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 %}

b96d17251456

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 %}

b96d17251456

image.png

9. 反向解析

Url 反向解析 {% url ‘namespace:name’ p1 p2 %}

b96d17251456

image.png

10. 跨站请求CSRF(Cross Site Request Forgery)

某些而已网站包含链接,表单,按钮,js利用登录用户在浏览器重的认证信息,进行非法操作,攻击服务,破坏数据

理解如下图:

b96d17251456

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值