一、模板
在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具,模板的设计方式实现了我们MVT中VT的解耦,VT有着N:M的关系,一个V可以调用任意T,一个T可以供任意V使用。
模板处理分为两个过程
① 加载
② 渲染
模板主要有两个部分 ① HTML静态代码 ② 动态插入的代码段(挖坑,填坑),模板中的动态代码段除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑。
二、标签
- {% %} 标识符
- 标签分为但标签和成对的标签
- 成对的标签切记不能省略,开始标签和结束标签
作用:
1. 加载外部传入的变量
2. 在输出中创建文本
3. 控制循环或逻辑
格式:
{% for 变量 in 列表 %}
语句1
{% empty %}
语句2
{% endfor %}
{# 当列表为空或不存在时,执行empty之后的语句 #}
常用标签
{{ forloop.counter }} 表示当前是第几次循环,从1数数
{{ forloop.counter0}} 表示当前是第几次循环,从0数数
{{ forloop.revcounter}}表示当前是第几次循环,倒着数数,到1停
{{ forloop.revcounter0}}表示当前第几次循环,倒着数,到0停
{{ forloop.first }} 是否是第一个 布尔值
{{ forloop.last }} 是否是最后一个 布尔值
ifequal 如果相等
{% ifequal value1 value2 %}
语句
{% endifequal %}
ifnotequal 如果不相等
url:反向解析
{% url 'namespace:name' p1 p2 %}
csrf_token 用于跨站请求伪造保护的
{% csrf_token %}
CSRF
跨站请求伪造
某些恶意网站包含链接,表单,按钮,Js利用登陆用户在浏览器中的认证信息,进行非法操作,攻击服务,破坏数据
在表单中添加
{% csrf_token %}
在settings中的中间件MIDDLEWARE中配置打开
'django.middleware.csrf.CsrfViewMiddleware',
三、结构标签
block
{% block XXX%}
code
{% endblock %}
- 块
- 用来规划我们的布局 (挖坑)
- 首次出现,代表规划
- 第二次出现,代表填充以前的规划
- 第三次出现, 代表填充以前的规划,默认动作是覆盖
- 如果不想覆盖,可以添加 {{ block.super }}
- 这样就实现了增量式操作
extends
{% extends '父模板路径' %}
- 继承
- 可以获取父模板中的所有结构
block + entends
- 化整为零
include
{% include '模板文件' %}
- 包含
- 可以将页面作为一部分,嵌入到其它页面中
include + block
- 由零聚一
- 三个标签也可以混合使用
- 能用block + extends搞定的 就尽量不要使用include
- 如果我们继承自一个父模板,子模版自己直接重写页面结构是不生效的,只能在既有坑中进行填充
四、静态资源
- 动静分离
- 创建静态文件夹
- 在settings中注册 STATICFILES_DIRS=[]
- 在模板中使用
- 先加载静态资源 {% load static %}
- 使用 {% static 'xxx' %} xxx相对路径
- 坑点
- 仅在debug模式可以使用
- 以后需要自己单独处理