1. jinja2模板规范
  2. 在当前项目中创建一个文件为templates的文件夹,将其设置为模板文件夹,新建的html为模板页面,
  3. 在视图函数中使用render_template(".html的文件", my_list=mylist),my_list作为在模板页面使用的的变量 {{ my_list}}
  4.  
  5. 过滤器 符号 "|" 管道左边作为输入传一个变量到管道右边进行输出
  6. safe 对字符串的html标签的代码进行解析,并以html显示在当前文件
  7. reverse 翻转
  8. upper 大写
  9. lower 小写等
  10.  
  11. 自定义过滤器(本身相当于一个函数)
  12. @app.template_filter("valreverse") #将其添加到过滤器组中
  13. def add_after(value):
  14. value += "Hello world"
  15. result = "¥" + value + "&&"
  16. return result
  17.  
  18. 模板中的forif
           loop.index # 获取下标为0的数据
           loopindex0 # 获取下标为1的数据
  19. {% for ret in result %}
              # 获取下标索引为0的数据
  20. {% if loop.index == 1 %}
  21. <li style="background-color: red">{{ ret.data }}</li>
  22. alert({{ ret.data }})
  23. {% elif loop.index == 2 %}
  24. <li style="background-color: green">{{ ret.data }}</li>
  25.  
  26. {% elif loop.index == 3 %}
  27. <li style="background-color: fuchsia">{{ ret.data }}</li>
  28.  
  29. {% else %}
  30. <li style="background-color: cyan">{{ ret.data }}</li>
  31.  
  32. {% endif %}
  33. {% endfor %}
  34.  
  35. 模板代码的复用

  36. {% macro func_macro() %}
  37. // 这里填想要封装的html代码
  38. {%endmacro %}
  39.  
  40. {% import html模板 %} 导入到其他模块中使用
              该模板中含有func_macro函数
  41. 继承
  42. 导入模板文件
  43.  
  44.           // 继承基类中的html代码
  45. {% "extends base_index_detail.html" %}
  46.  
  47. // 以下代码是进行挖坑和填坑的操作
  48. {% block titleBloock %}
  49. // 自己独有的代码块
  50. {% endblock %}
  51.  
  52. 包含
  53. include()
  54. ignore missing // 忽略错误的
  55. 模板中特有的变量和函数
  56. py文件中和模板文件中都可以直接拿来使用,不需要传参
  57. request
  58. session
  59. g
  60. config
  61. url_for()
  62. get_flashed_messages() flash搭配使用
           
           代码如下:
  63.  
  64. @app.route("/login")
  65. def login():
  66. g.name = "xiaoming"
  67. session["username"] = "zhangsan"
  68. flash("哈哈哈")
  69. flash("嘻嘻嘻")
  70. flash("呵呵呵")
  71. return render_template("demo_unique.html")
  72.  
  73. html模板中的内容为:
  74. config:
  75. {{ config.DEBUG }} <br>
  76. session:
  77. {{ session["username"] }}<br>
  78. request:
  79. {{ request.url }}<br>
  80. g变量:
  81. {{ g.name }} <br>
  82.  
  83. 两个函数为:
  84. <a href="{{ url_for('index') }}">回到首页</a><br/>
  85. flash结果为:
  86. {% for data in get_flashed_messages() %}
  87. {{ data }}
  88. {% endfor %}
  89.  
  90. flask_wtf表单
  91. pip install flask_wtf
  92.  
  93. 原生的form表单和用类生成的对象,再用对象去创建这个表单
  94. Web 表单是 Web 应用程序的基本功能
  95. 它是HTML页面中负责数据采集的部件,表单有三个部分组成:表单标签、表单域、表单按钮,
  96. 表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器
  97.  
  98. CSRF 跨站请求伪造
           flask_wtf中有个generate_csrf 会自动生成CSRF
  99. CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造
  100.  
  101. CSRF攻击
  102. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求
  103.  
  104. 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
  105. 造成的问题:个人隐私泄露以及财产安全
  106.  
  107. 开启CSRF验证
  108. app.config['WTF_CSRF_ENABLED'] = True
  109.  
  110. 防止CSRF攻击
  111. 在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token,

           在form表单中设置csrf
             <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

  1. 在用户点击提交的时候,会带上这两个值向后台发起请求
  2. 后端接受到请求,以会以下几件事件:
  3. cookie中取出 csrf_token从表单数据中取出来隐藏的 csrf_token 的值进行对比如果比较之后两值一样,那么代表是正常的请求,
              如果没取到或者比较不一样,代表不是正常的请求,不执行下一步操作

web开发框架Flask学习二的更多相关文章

  1. web开发框架Flask学习一

    flask框架 用Python做Web开发的三大框架特点 Django 主要特点是大而全,集成了很多的组件,例如:Admin Form Model等,不管你用不用的到,他都会为 你提供,通常用于大型W ...

  2. flask学习(二):认识web

    url详解: URL是Uniform Resource Locator 的简写,统一资源定位符 一个URL由以下及几部分组成: scheme://host:port/path/?query-strin ...

  3. pthon web框架flask(二)--快速入门

    快速入门 迫切希望上手?本文提供了一个很好的 Flask 介绍.假设你已经安装 Flask, 如果还没有安装话,请浏览下 安装 . 一个最小的应用 一个最小的应用看起来像这样: from flask ...

  4. Flask学习 二 模板

    jinja2模版 from flask import Flask,render_template app = Flask (__name__) @app.route ('/<name>') ...

  5. flask 学习(二)

    安装了flask扩展 以及flask-bootstrap 默认情况下,flask在template文件夹寻找模板. flask 加载的是Jinja2模板,该模板引擎在flask中由函数render_t ...

  6. Web Services的学习二

    1.SOAP简单对象访问协议 基于XML的简单协议,可让应用程序在HTTP上进行信息交换,或者说SOAP就是用于访问网络服务的协议.它独立于平台,独立于语言,很简单并可扩展,而且允许绕过防火墙. 2. ...

  7. python web开发——django学习(二)orm介绍与model检查

    原始是这样连接数据库的: 现在改用django orm (1)先在setting里配置app (2)在modle.py里建model class UserMessage(models.Model): ...

  8. python web开发——django学习(二)第一个django网站运行成功

    1.写message_form.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  9. 5个最好的Python Web开发框架

    Python是最受欢迎的和最有效率的开发语言之一.Python能让你更快完成工作,并且更有效地集成系统.Python是动态的面向对象的语言.即便你刚刚开始学习Python,也立即就能获得生产力上的提升 ...

随机推荐

  1. 【Linux】linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲ta ...

  2. pat1062. Talent and Virtue (25)

    1062. Talent and Virtue (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Li Abou ...

  3. 【转】c# winform 创建文件,把值写入文件,读取文件里的值,修改文件的值,对文件的创建,写入,修改

    创建文件和读取文件的值 #region 判断文件是否存在,不存在则创建,否则读取值显示到窗体 public FormMain() { InitializeComponent(); //ReadFile ...

  4. Java使用Zxing生成、解析二维码工具类

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...

  5. IoC和AOP使用扩展。。。

    实现依赖的多种方式. 1.理解构造注入. 2.掌握使用p命名空间实现属性注入. 3.理解不同的数据类型的注入方式. 4.如何通过构造注入为业务类注入所依赖的数据访问层对象,实现保存用户数据功能. 5. ...

  6. 使用css写三角箭头

    .right-arrow{ width:6px; height:6px; align-self: center; border-right:1px solid #2ac795; border-left ...

  7. Windows 10 取消桌面右键“图像属性”、“图像选项”

    Windows 10 取消桌面右键"图像属性"."图像选项" 桌面右键 说明:在windows 10中,桌面右键出现"图像属性"." ...

  8. TAS5508 output changing

    1.如果信号从3th通道输入,正常就是从PWM5,6输出,现在要想从PWM7,8输出,就按照以下红线部分选择DAP CH5和DAP CH6,然后写入相应寄存器产生的12 bytes的数组数据即可.

  9. System Center Configuration Manager 2016 域准备篇(Part3)

    步骤2.将CM16加入域 注意:在ConfigMgr服务器(CM16 )上以本地管理员身份执行以下操作 手动加入域,请登录CM16.启动Windows文件资源管理器 右键单击This-PC,然后选择 ...

  10. jQuery-显示与隐藏不用判断的快捷方法

    功能:显示被隐藏的元素,隐藏已显示的元素. 常规方法:(需要先判断元素状态) $("button").click(function(){ if ($(".content& ...