-----------模板--------------
定义模板
-
变量var:视图传递给模板的数据
注意:要遵守标识符规则 语法:{{var}} <h1>{{stu.sname}}</h1> #调用的模型里的属性 <h1>{{stu.getName}}</h1> #调用模型里的方法 注意: 1.如果使用的变量不存在,则插入的是空字符串 在模板中使用点语法 字典查询 属性或者方法 数字索引 在模板中调用对象的方法 注意:不能传递参数
-
标签tag
语法: {%tag%} 作用: 在输出中创建一些文本 控制逻辑和循环 -if: 逻辑判断 格式: 1.{% if 表达式 %}语句 {%endif%} 2.{% if 表达式 %}语句{%else%}语句2 {%endif%} 3.{% if 表达式 %}语句{%elif%}语句2{%elif%}语句n{%else%}语句 {%endif%} 示例: {%if num%}<h1>num={{num}}</h1>{%endif%} -for 遍历 格式: 1.{% for 变量 in 列表 %} 语句 2.{%for 变量 in 列表%} 语句 {%empty%} 列表为空或者不存在时执行语句 {%endfor%} 变量:{{forloop.counter}} 表示当前是第几次循环 -comment 注释 格式: {%comment%} 注释的内容 {%endcomment%} -ifequal/ifnoteuqal 判断 作用: 判断是否相等或者不相等 格式: {%ifequal 值1 值2%} 如果值1=值2 执行此语句 {%endifequal%} -include 作用: 加载模板并以标签内的参数渲染 格式: {%include '模板目录' 参数1 参数2...%} ------------ -url ------------- 作用: 反向解析 格式: {%url 'namespace:name' p1 p2%} 注意:定义url时,需要为项目urls.py中include定义namespace属性,为应用urls.py中的path定义name属性 并且在应用的urls.py声明命名空间: app_name= 'name属性' 工程urls.py: re_path(r'^',include('myApp.urls',namespace="app")), 应用urls.py: re_path(r'^good/(\d+)$',views.good,name="good"), html: <a href="{% url 'app:good' 1 %}">反向解析链接</a> ------------------- -csrf_token ------------------ 作用: 用于跨站请求伪造保护 默任写恶意的网站包含链接,表单,按钮,js。会利用登陆的用户在浏览器中认证从而攻击服务 格式: {%csrf-token%} 防止CSRF恶意攻击: 1.在settings.py中MIDDLEWARE 加上:'django.middleware.csrf.CsrfViewMiddleware', 但是这样自己本身服务器也无法访问 2.在表单中 添加 {% csrf_token %} ----------------------- -block、extends ------------------- 作用:模板继承可以减少页面的内容的重复定义,实现页面的重用 block标签:在父模板中预留区域,子模版去填充 语法:{% block 标签名 %} 挖坑 {% endblock %} extends标签:继承模板,需要写在模板文件的第一行 语法: {% extends '父模板路径' %} {% block 标签名 %} 填坑 {% endblock%} 示例:定义一个父模板 定义子模板 ------------------ -autoescape on/off --------------------- 作用:用于html转义 问题:将接收到的code当成一个普通的字符串渲染 views: return render(request,'myApp/index.html',{"code":"<h1>haha </h1>"}) html: {{code}} 目的:将接收到的字符串当成一个html代码渲染 示例: html": {% autoescape off %} #off 关闭自动转义(不转成字符串) {{code}} {% endautoescape %} -widthratio 作用:乘法和除法 格式: {% widthratio 变量 除数 乘数 %} <h1>num= {% widthratio num 1 5 %}</h1> 验证码: 作用:在用户注册,登录页面的时候使用,防止暴力请求。减轻服务器等待压力 防止CSRF的一种方式
-
过滤器
{var|lower}} 小写 {{var|upper }} 大写 {{var|join}} 格式:列表|join:"#" {{var|default}} 如果一个变量没有被提供,或者值为false,空,可以使用默认值 格式:{{var|default:"#"}} {{var|date}} 根据给定格式转换为日期为字符串 格式: {{vardata|data:'y-m-d'}} {{var|escape}} {{var|safe}} HTML转义 示例:{{code|safe}} {{var|add}} 加减 格式: {{num|add:-数}} {{num|add:数}} {var|divisibleby} 基数,偶数 格式: {%表达式|divisibleby:2%}