flask jinja2

来源:互联网 发布:xmind8 mac 激活码 编辑:程序博客网 时间:2024/05/21 06:16

这里写图片描述

最近入坑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')}}
原创粉丝点击