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

{% macro func_macro() %}
// 这里填想要封装的html代码
{%endmacro %} {% import html模板 %} 导入到其他模块中使用
          该模板中含有func_macro函数
继承
导入模板文件           // 继承基类中的html代码
{% "extends base_index_detail.html" %} // 以下代码是进行挖坑和填坑的操作
{% block titleBloock %}
// 自己独有的代码块
{% endblock %} 包含
include()
ignore missing // 忽略错误的
模板中特有的变量和函数
在py文件中和模板文件中都可以直接拿来使用,不需要传参
request
session
g
config
url_for()
get_flashed_messages() 与 flash搭配使用
       
       代码如下: @app.route("/login")
def login():
g.name = "xiaoming"
session["username"] = "zhangsan"
flash("哈哈哈")
flash("嘻嘻嘻")
flash("呵呵呵")
return render_template("demo_unique.html") html模板中的内容为:
config:
{{ config.DEBUG }} <br>
session:
{{ session["username"] }}<br>
request:
{{ request.url }}<br>
g变量:
{{ g.name }} <br> 两个函数为:
<a href="{{ url_for('index') }}">回到首页</a><br/>
flash结果为:
{% for data in get_flashed_messages() %}
{{ data }}
{% endfor %} flask_wtf表单
pip install flask_wtf 原生的form表单和用类生成的对象,再用对象去创建这个表单
Web 表单是 Web 应用程序的基本功能
它是HTML页面中负责数据采集的部件,表单有三个部分组成:表单标签、表单域、表单按钮,
表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器 CSRF 跨站请求伪造
       flask_wtf中有个generate_csrf 会自动生成CSRF
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造 CSRF攻击
CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
造成的问题:个人隐私泄露以及财产安全 开启CSRF验证
app.config['WTF_CSRF_ENABLED'] = True 防止CSRF攻击
在客户端向后端请求界面数据的时候,后端会往响应中的 cookie 中设置 csrf_token 的值在 Form 表单中添加一个隐藏的的字段,值也是 csrf_token,

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

                在用户点击提交的时候,会带上这两个值向后台发起请求
后端接受到请求,以会以下几件事件:
从 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. dell电脑 win8换win7重启报错及解决方案

    Win8换win7 bios 识别不到usb选项 按以下操作即可: 把Secure Boot control 改为Disabled 的,F10保存重启,F12进入bios选择usb启动即可: 安装完系 ...

  2. Vmware 可用的激活码

    4F207-8HJ1M-WZCP8-000N0-92Q6G 0A6Z5-8H1EJ-WZCL1-PK072-23DJG 0F0Q9-8F38L-RZXT9-4U054-ACW5F JA02E-09H4 ...

  3. EPSG:4326

    简单说,"EPSG:4326"指的就是WGS84坐标系 参考 http://blog.csdn.net/cloverwindy/article/details/8663968 AU ...

  4. 六、C++离散傅里叶逆变换

    C++离散傅里叶逆变换 一.序言: 该教程承接上文的离散傅里叶变换,用于进行离散傅里叶逆变换. 二.设计目标 对复数数组进行离散傅里叶逆变换,并生成可供使用的图像类. 三.详细步骤 输入:经傅里叶变换 ...

  5. HDU 3351 Seinfeld 宋飞正传(水)

    题意: 给出一个串,串内只有大括号,问经过几次改变可使全部括号合法?改变指的是可以将某一方向的括号变成另一方向. 思路: 利用栈的特点,若出现成对的合法括号,直接删掉,留下那些不合法的成为一串.既然不 ...

  6. LeetCode Length of Last Word 最后一个字的长度

    class Solution { public: int lengthOfLastWord(const char *s) { ; string snew=s; ,len=strlen(s); ]; ) ...

  7. WIN7_X64连接远程Oracle数据库

    当使用微软提供的驱动:Provider=MSDAORA时,要使用32位的Oracle客户端,不然会报错! 下载:Oracle Database Instant Client 11g x86

  8. EOS签名R值过大导致报错"is_canonical( c ): signature is not canonical"

    简要 EOS中规定签名的R和S必须同时小于N/2才是合法的签名. 详细 EOS签名交易相对BTC和ETH来说,对签名的要求更加严格了. BTC中bip62规定了((Low S values in si ...

  9. SwiftHN阅读器应用IOS源码

    SwiftHN是用Swift语言编写的Hacker News阅读器,同时采用了iOS 8最新的API. <ignore_js_op> <ignore_js_op> 详细说明:h ...

  10. mysql 疑难问题-django

    1不能存储中文 问题解决1: 确认表设计时,字段name_vn字符集是utf8,改成utf8后可以存储中文