flask jinja2 - 入门&高级玩法(继承、宏)

这里写图片描述

最近入坑flask,jinja2作为其默认支持的模板语言,绝对值得一学。

本文适合还未接触想快速尝试一下(不想看官文)的同学。

官方文档:http://docs.jinkan.org/docs/jinja2/

1. 是什么

是什么:jinja2是Flask默认支持的模板引擎,它的主要作用是渲染模板

2. 怎么用

一个最简单的入门程序, 它包含两部分

1.test.py

# 1.导入依赖包
from flask import Flask, render_template

    # 2.实例化app
    app = Flask(__name__)

    # 3.映射,默认情况下flask从templates文件夹中寻找模板文件(index.html)
    @app.route('/')
    def index():
        return render_template('index.html')

    @app.route('/user/<param>')
    def user(name):
        return render_template('index.html', param=param)

2.templates/index.html

接收变量(过滤),变量写在{{ }}中

....
<body>
    {{ param|safe }}
<body>
...
  • 注:其中’|‘后面加过滤器
    • Jinja2变量过滤器:
    • safe: 渲染时不转义
    • capitalize:把值的首字母转换成大写,其他字母转换成小写
    • lower: 把值转换成小写形式
    • upper: 把值转换成大写形式
    • title: 把值中每个单词的首字母都转换成大写
    • trim: 把值的首尾空格都去掉
    • striptags: 渲染之前把值中所有的HTML标签都删掉

!添加的逻辑代码,写在{% %}中

  • 定义变量&逻辑循环
{% set links=[
    {'label':'home','href':url_for('.index')},
    {'label':'home','href':url_for('.about')},
    {'label':'home','href':url_for('.services')},
    {'label':'home','href':url_for('.projects)},
]%}

<nav>
    {% for link in links %}
        <a href="{{ link.href }}">{{ link.label }}</a>
    {% endfor %}
</nav>

3. 一些高级玩法

  • 3.1 继承
<!--此处继承了bootstrap-->
{% extends 'bootstrap/base.html' %}
<!--定义自己的模块-->
{% block title %}
    *****自定义内容
{% endblock %}
<!--修改父模块内容-->
{% block head %}
    {{ super() }}
    ******自定义内容
{% endblock %}
<!--包含子页-->
<% block head %>
    <% include 'includes/head.html' %>
    <% include ['includes/head.html','includes/head2.html'] %>
<% endblock head %>
  • 3.2 宏
<!--定义宏-->
{% marco input(name,type='text',value='',size=20) %}
    <input type="{{ type }}"
           name="{{ name }}"
           value="{{ value }}"
           size="{{ size }}"
    />
{% endmarco %}

<!--调用宏-->
{{ input('username')}}
{{ input('password',type='password')}}

如果宏比较多,可以抽到单独的html中,再import进来

{% import '_marcos.html' as ui%}
...
{{ ui.input('username')}}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值