Django学习9:模板(templates)
来源:互联网 发布:我的世界如何添加端口 编辑:程序博客网 时间:2024/06/01 15:09
模板
概述
模板由两部分组成:HTML代码 + 逻辑控制代码(变量 + 标签 + 过滤器)
作用:很便利的生成HTML页面
优点:实现了业务逻辑与显示内容的分离,一个视图可以任意使用模板,一个模板可以供多个视图使用
模板处理:
- 加载:根据制定的规则找到对应的模板,然后预处理,编译后存在内存中
- 渲染:用给定的context内容数据填充加载的内容,并生产新的HTML页面(字符串)
定义模板
变量:
- 语法:{{ var }}
- 注意:变量名要遵循标识符规则,如果使用的变量不存在,则插入空字符串
- 示例:
Nice day
{{ sentence }} - 在模板中使用 . 语法访问对象的属性
- 在模板中调用对象的方法:不能传递参数
{{ stu.say }} # 这里的say是个无参函数
标签:
- 语法:{% tag %}
- 作用:控制逻辑
- if:判断
{% if num %}
Nice
{% endif %} - for:循环
- stu.sname {% empty %}
- 无数据 {% endfor %}
{% for stu in students %}
- comment:注释
{% comment %}
Hi
Hello
{% endcomment %} - ifequal、ifnotequal:等于、不等于
{% ifequal num 10 %}
Hi
{% endifequal %} - include:包含
# 作用:加载模板并以标签内的参数渲染
# 格式:{% include ‘模板目录’ with 参数1 = 参数2 %} - url:反向解析
{% url ‘namespace:name’ p1 p2 %} - csrf_token:跨站请求伪造保护
{% csrf_token %} # 启动post请求功能
账号:
- block、extends:模板继承
- autoescapr:用于HTML转义
过滤器:
- 语法:{{ 变量 | 过滤器 }}
- 作用:在变量被显示之前修改它
- lower:转小写
- upper:转大写
- join:
# 格式:list | join:参数
# 示例:{{ str | join:’#’}} - default:如果使用的变量不存在,或者为空、False,则使用默认值,否则使用变量的值
# 格式:var | default:参数
# 示例:{{ num | default:’这是个False哟~’}} - date:根据给定格式对一个变量进行格式化显示,格式:var | date:’Y-m-d’
- escape:开启HTML转义
- 加减乘除
{{ num }}
{{ num | add:5}}
{{ num | add:-5}}
{% widthratio num 1 5 %}
{% widthratio num 5 1 %} 注释
# 单行注释:
{# 一行的内容 #}# 多行注释(可以包含任何代码): {% comment %} ... {% endcomment %}
模板继承:
- 作用:可以减少页面内容的重复定义,实现页面内容的重用
- block标签:在父模板中预留位置,让子模版填充
- extends标签:继承,写在模板文件的第一行
- 示例:
# 定义模板<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>{{ title }}</title></head><body> <div id="box"> {% block main%} {% endblock main %} </div> <hr> <div id="temp"> {% block temp %} {% endblock temp %} </div></body></html># 定义子模版{% extends 'base.html' %}{% block main %} <h1>Nice nice</h1>{% endblock main %}{% block temp %} <h1>Lalala</h1>{% endblock temp %}
HTML转义:
- 问题:用户输入script标签,会当成js代码来处理,对页面造成影响
- 默认是开启自动转义,所接收的内容当成字符串处理
- 关闭转义
{% autoescape off %}
{{ code }}
{% endescape %} - 注意:如果在父模板中关闭了自动转义,在其子模版中也是关闭的
CSRF:
模拟用户的cookie发起请求(暂未说详细)
验证码:
- 作用:在用户注册、登陆页面为了防止暴力请求,减轻服务器的压力;防止CSRF的方法
阅读全文
0 0
- Django学习9:模板(templates)
- django学习--templates模板
- Django学习:模板Templates(4)
- Django学习(六)(模板templates)
- Django学习:Templates过滤器(12)
- PythonWeb开发Django框架(三)模板Templates初步
- Django 框架MTV架构之Templates(模板)
- Django模板应用实例templates\hello.html
- Django学习(7):templates过滤器及Admin增强
- Live templates(模板)
- 1.6 TEMPLATES(模板)
- c++ 模板(Templates)
- django(views、urls、templates)
- 学习利用模板(Templates)的格式化功能
- 全面解析Django的模板路径设置templates(settings.py)
- Django&templates
- Django框架学习-Templates进阶用法
- python学习之--Django--初次使用templates
- 数独游戏(回溯算法)
- mongo-connector使用
- html页面加上背景音乐自动播放
- 树莓派临时修改IP地址
- UIWebView体系结构(三)UIWebDocumentView和WebView
- Django学习9:模板(templates)
- unity中获取FPS
- Win10无法卸载/重装IE11浏览器的解决方法
- 关于spark 矩阵转置的一个坑,解决了
- 人工智能浅谈
- ipython
- phpstorm 清除缓存
- Js实现简单计算器
- PHP json_encode float