Flask模板

 

漂亮的页面需要 html 、 css 、 js .

可以把这一堆字段串全都写到视图中, 作为 HttpResponse() 的参数,响应给客户

问题

视图部分代码臃肿, 耦合度高

这样定义的字符串是不会出任何效果和错误的

效果无法及时查看.有错也不容易及时发现

在 Flask中,配套的模板是 Jinja2,Jinja2的作者也是Flask的作者。 这个模板非常的强大,并且执行效率高。

步骤

创建模板

在 应用 同级目录下创建模板文件夹 templates . 文件夹名称固定写法

在 templates 文件夹下, 创建 应用 同名文件夹. 例, Book

在 应用 同名文件夹下创建 网页模板 文件. 例 : index.html 设置模板查找路径 模板处理数据

设置模板查找路径

模板处理数据

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/test')
def index():
    return render_template('index.html')

模板传参

from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
    return
render_template('index.html',uname='sxt')

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SXT</title>
</head>
<body>
     从模版中渲染的数据
     <br>
     {{ uname}}
</body>
</html>

 

@app.route('/')
def hello_world():
    context = {
        'uname': 'momo',
        'age': 18,
        'country': 'china',
        'childrens': {
            'name': 'mjz',
            'height': '62cm'
       }
   }
    return
render_template('index.html',
**context)

模板使用url_for函数

@app.route('/accounts/login/<name>/')
def login(name):
    print(name)
    return '通过URL_FOR定位过来的!!!'
<a href="{{
url_for('login',p1='abc',p2='ddd',name='江理') }}">登录</a>

过滤器介绍

有时候我们想要在模版中对一些变量进行处理,那么就必须需要类 似于Python中的函数一样,可以将这个值传到函数中,然后做一些 操作。

在模版中,过滤器相当于是一个函数,把当前的变量传入到过滤器 中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果 渲染到页面中

@app.route('/')
def hello_world():
    return
render_template('index.html',postion=-1)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SXT</title>
</head>
<body>
    <h3>过滤器的基本使用</h3>
    <p>位置的绝对值为[未使用过滤器]:{{ postion}}
</p>
    <p>位置的绝对值为[使用过滤器]:{{
postion|abs}}</p>
</body>
</html>


Jinja模板自带过滤器

 

 

 

defalut过滤器

<body>
    <h1>default过滤器</h1>
    过滤前的昵称数据是:{{nick_name}}<br>
    过滤后的昵称数据是:{{nick_name | default('用
户1',boolean=true)}}<br>
    过滤后的昵称数据是:{{nick_name or '用户2'}}
<br>
</body>

其它过滤器

自定义过滤器

只有当系统提供的过滤器不符合需求后,才须自定义过滤器

过滤器本质上就是一个函数。

如果在模版中调用这个过滤器,那么就会将这个变量的值作为第一 个参数传给过滤器这个函数, 然后函数的返回值会作为这个过滤器的返回值。

需要使用到一个装饰器: @app.template_filter('过滤器名称')

流程控制-选择结构

所有的控制语句都是放在 {% ... %} 中,并且有一个语句 {% endxxx %} 来进 行结束!

if:if语句和python中的类似,可以使用 >,=,==,!= 来进行判 断,也可以通过 and,or,not,() 来进行逻辑合并操作

<h1>选择结构</h1>
{% if uname == 'sxt' %}
<p>whuim</p>
{% endif %}
{% if uname == 'whuim'%}
<p>江理</p>
{% else %}
<p>江西理工</p>
{% endif %}
{% if uname == 'whuim' %}
<p>王慧明</p>

流程控制-循环结构

for...in... for循环可以遍历任何一个序列包括列表、字典、元组。并且 可以进行反向遍历,以下将用几个例子进行解释:

<ul>
   {% for user in users%}
       <li>{{ user}}</li>
   {% endfor %}
</ul>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值