NOTE

1.VF的作用:生成请求的响应。一般来说请求会改变程序的状态,这种变化会在视图函数中产生。

eg.用户在网站中注册了一个新账户,用户在表单中输入电子邮件地址和密码,然后提交到服务器,服务器接收到请求,然后Flask将请求分发到处理注册的视图函数。这个视图函数首先要访问数据库添加新用户,然后生成响应返回游览器。

访问数据库添加新用户的过程称为业务逻辑,生成响应返回称为表现逻辑。

2.将业务逻辑和表现逻辑混杂在一起使代码难以理解和维护。把表现逻辑移动到模板中能够提升程序的可维护性。

3.模板是一个保含响应文本的文件,其中有需要用上下文中的真实值替换占位变量的动态部分,也有无法改变的静态部分。

用真实值替换变量,返回响应字符串,称为渲染。

Flask使用了名为Jinja2的强大模板引擎。

4.Demo

Jinja2 templates/index.html

<h1>Hello World!</h1>

Jinja2 templates/user.html

<h1>Hello, {{ name }}!</h1>

模板渲染:从flask导入render_template函数,以集成Jinja2引擎。

#!/usr/bin/env python

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
return render_template('index.html') @app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name) if __name__ == '__main__':
app.run(debug=True)

name=name 关键字键值对,左边的name是参数名,右边的name是变量。

(venv) sh-3.2# ./hello.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 195-717-834
127.0.0.1 - - [18/Feb/2017 15:52:11] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [18/Feb/2017 15:52:22] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [18/Feb/2017 15:52:23] "GET /user/wasdns HTTP/1.1" 200 -
127.0.0.1 - - [18/Feb/2017 15:52:25] "GET /user/wasdns HTTP/1.1" 200 -

5.{{ name }}结构表示一个变量,是一种特殊的占位符。Jinja2能够识别所有类型的变量,甚至是一些复杂的类型。

此外,可以使用过滤器来修改变量,过滤器名添加在变量名之后,中间使用竖线划分。

=> Flask的Jinja2模板引擎 — 过滤器(3rd)

safe        渲染值时不转义
capitaliza 把值的首字母替换为大写,其他为小写。

eg.

<h1>Hello, {{ name|capitalize }}!</h1>
@app.route('/user/<name>')
def user(name):
return render_template('filter.html', name=name)
127.0.0.1 - - [18/Feb/2017 16:11:01] "GET /user/wasdns HTTP/1.1" 200 -

出于安全考虑,Jinja2会转义所有变量。有些情况下需要显示变量中存储的html代码,这个时候就需要使用safe过滤器。

2017/2/18

Flask 5 模板1的更多相关文章

  1. Flask网页模板的入门

    #网页模板需要导入render_template from flask import Flask,render_template   方法一: #使用render_template模块来渲染模板文件 ...

  2. flask框架--模板

    今天又是一个精彩又无聊的一天,不过随着知识的缓慢的增加我的内心也充满了干劲,虽然前进的有些缓慢 但我不会这么容易放弃的,一定要相信自己,不要灰心 好了 ~ 不说废话了 , 我自己听的都有些受不了了 . ...

  3. Flask:Flask的模板系统和静态文件

    1.Flask模板系统 Django框架有自己独立的模板系统,而Flask是没有的,Flask默认采用jinjia2模板系统,jinjia2是仿写Django模板系统的一个第三方模块,但性能上要比Dj ...

  4. Flask 的模板渲染

    Flask 的模板渲染 渲染模板语言和django很像,都是用{{}},{%%} 注意点: 1 flask给模板传值,render_template("index.htm",use ...

  5. 2.Flask jinjia2模板

    1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def he ...

  6. 第四篇flask中模板语言 jinja2

    Flask中默认的模板语言是Jinja2 首先我们要在后端定义几个字符串,用于传递到前端 STUDENT = {, 'gender': '中'}, STUDENT_LIST = [ {, 'gende ...

  7. 二.Flask 学习模板

    Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于模板渲染? 简单来说,就是将 ...

  8. Python——Flask框架——模板

    一.渲染模板 render_template 函数把Jinja2模板引擎集成到程序中 二.Jinja2变量过滤器 过滤器名 说明 safe 渲染值是不转义 capitalize 把值得首字母转换成大写 ...

  9. flask 在模板中渲染错误消息

    在模板中渲染错误消息 如果form.valicate_on_submit()返回False,说明验证没有通过,对于没有验证通过的字段,WTForms会把错误信息添加到表单类的errors属性中,这是一 ...

  10. flask 在模板中渲染表单

    在模板中渲染表单 为了能够在模板中渲染表单,我们需要把表单类实例传入模板.首先在视图函数里实例化表单类LoginForm,然后再render_template()函数中使用关键脑子参数form将表单实 ...

随机推荐

  1. android极光推送

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考 ...

  2. 新浪通过API分享 实践

    注:如果集成了百度的Frontia和SinaCoreSDK, 那么SSO会出现包冲突 https://github.com/sinaweibosdk/weibo_android_sdk/issues/ ...

  3. java GC工作机制

    转自:http://www.cnblogs.com/hzdtf/articles/5419987.html GC:垃圾回收站,是将java的无用的堆对象进行清理,释放内存,以免发生内存泄露.在介绍ja ...

  4. 豆瓣api开发

    前面有说过豆瓣API的开发,在做一些开源项目的时候,很多时候会用到豆瓣API接口,拿过来做测试,现在只是对豆瓣API开发做一些简单的梳理: 豆瓣API开发的接口: https://developers ...

  5. OneThink视图模型进行组合查询!文档组合文档详情

    测试方法:twoCate: public function twoCate(){ $where = array( 'category_id'=>43 ); $list = D('TwoView' ...

  6. R向量匹配match和pmatch

    match(x, table, nomatch = NA_integer_, incomparables = NULL) x: 向量, 要匹配的值; table: 向量, 被匹配的值; nomatch ...

  7. Linux系统 centOS 更换软件安装源

    阿里云Linux安装软件镜像源阿里云是最近新出的一个镜像源.得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.c ...

  8. jps命令用法

    jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写.非常简单实用. 命令格式:jps [option ...

  9. Css-常用css

    /*怪异盒子模型*/ .box { box-sizing: border-box; } /*水平居中的内联块级*/ .inBlock { display: inline-block; vertical ...

  10. poj2411 Mondriaan's Dream【状压DP】

    Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 20822   Accepted: 117 ...