Flask框架-模板

---恢复内容开始---

概念:

  • 模板是指包含响应文本的文件,不特指html格式的文件

基础语法:

  • 变量:{{变量}} 接收视图函数返回的数据
  • 语句:{% if 表达式%} {%endfif%}   {%for v in key%} {{v}} {{%endfor%}} 

过滤器:

  • 本质是函数,对数据进行计算或格式化输出
  • 语法:{{变量 | 过滤器名称}}
  • 过滤器支持链式调用,从前到后依次执行
  • (重要)自定义过滤器:两种形式
    •   定义函数:app.add_tempalte_filte(函数名称,过滤器名称) ,如果和内置过滤器重名会覆盖内置过滤器
    •   @app_tempalte_filter(过滤器名称)

模板代码复用:

  • 继承:本质是代码的替换,作用为了实现模板页面固定区域块替换。
    •   相同内容下留下,不同的内容删除(让子模块填充)
    •   灵活运用。
    •   语法:{%extend  父模板%}{% block %}
  • 宏 macro:本质是函数,作用为了实现模板也i按动态的功能代码块。
  • 包含include:本质是复用,只能复用原始HTML字符串,不能复用通过扩展实习那的功能。

特殊变量和方法:

  • 不仅可以在视图中使用,还可以在模板中使用
  • url_for、config、request、session、g、flash消息闪现

CSRF:

  • 口述(面试的角度)
  • 实现保护:
    •   本质是在请求的参数中加入混淆字符串;csrf_token。
    •   服务器生成token写入到客户端浏览器的cookie中,如果使用模板在表单域中设置token,服务器会比较cookie和表单域中的token是否一致。
    •     如果是异步的网络请求,ajax请求需要在请求的参数中加入token 。
    •        服务器会比较请求体和cookie中的token是否一致,如果不一致是伪造的请求。
    •    一般只会验证put、post、delete,不会验证get请求;get请求参数长度都是有限制的(根据浏览器的品牌和版本决定),post放在请求体中,原则上没有限制。
原文地址:https://www.cnblogs.com/Xingtxx/p/9439932.html