模板引擎jinja2

1. 什么是Jinja2模板引擎?

1). python的Web开发中, 业务逻辑(实质就是视图函数的内容)和页面逻辑(html
文件)分开的, 使得代码的可读性增强, 代码容易理解和维护;

2). 模板渲染: 在html文件中,通过动态赋值 ,
将重新翻译好的html文件(模板引擎生效) 返回给用户的过程。

3). 其他的模板引擎: Mako, Template, Jinja2

2. 语法

1). Jinja2变量显示语法: {{ 变量名 }}

完整的过滤器查看位置: http://jinja.pocoo.org/docs/templates/#builtin-filters

Jinja2变量内置过滤器:
safe 渲染值时不转义
capitalize 把值的首字母转换成大写,其他字母转换成小写
lower 把值转换成小写形式
upper 把值转换成大写形式
title 把值中每个单词的首字母都转换成大写
trim 把值的首尾空格去掉
striptags 渲染之前把值中所有的 HTML 标签都删掉

如何自定义过滤器?

2). for循环:

{% for i in li%}

{% endfor %}

3). if语句

{% if user == 'westos'%}


{% elif user == 'hello' %}

{% else %}

{% endif%}

4). 宏的操作====相当于函数

  • 如何定义宏?

{% macro render(id) %}

hello world {{ id }}


{% endmacro %}

  • 如何调用宏?

{{ render(1) }}
{{ render(2) }}
{{ render(3) }}

5). include包含操作

如何使用: {% include “06_inclued.html”%}

6). 模板的继承: 一般网站的导航栏和底部不会变化, 为了避免重复编写导航栏信息;

- 如何定义模板?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}  {% endblock %}</title>
</head>
<body>
<div style="width: 100px; height: 200px" > 这是导航栏</div>
{% block body %}

hello

{% endblock %}

<div style="width: 100px; height: 200px" >这是底部</div>

</body>
</html>

- 如何继承基模板?

在html文件中写入
“”"
{% extends ‘06_base.html’%}

{% block title %}
继承案例
{% endblock %}

{% block body %}
这是最新填的block内容

{% endblock %}
“”"

from flask import  Flask, render_template
app = Flask(__name__)

class User(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return  "<User: %s>" %(self.name)

@app.route('/')
def index():
    message = " this is a Message "
    li = ['fentiao', 'fensi', 'fendai']
    info = {
        'name': 'fentiao',
        'age':10
    }
    fentiao = User(name="粉条", age=5)
    tags = "<h1>hello world</h1>"
#render_template 的功能是对先引入index.html,同时根据后面传入的参数,对html进行修改渲染。在使用render_template时,模板的位置放在templates文件夹下面,一般是html文件。


    return  render_template('06_index.html',
                            message=message,这里模块里的第一个message指的是html里面的变量message,而第二个message指的是函数06_index.html里面的变量message
                            names = li,
                            info=info,
                            fentiao=fentiao,
                            tags = tags
                         )



@app.route('/users/')
def users():
    usersinfo = [('user%s' %(i), "password%s" %(i)) for i in range(100)]
    return  render_template('06_users.html',
                            usersinfo = usersinfo
                            )



@app.route("/macro/")
def macro():
    return  render_template('06_macro.html')




@app.route('/extends/')
def extends():
    return  render_template('06_use_block.html')
# **********************自定义过滤器******************************
# 定义一个函数
def format_data(s):
    return  "这是一个过滤器:" + s
# 将该函数添加到默认过滤器中;
app.add_template_filter(format_data, 'fmt')  


if __name__ == '__main__':
    app.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vscode最新插件合集(20190814)part1,共2个分包(part1/2),都下载后用命令“copy /b extensions.zip.rm1+extensions.zip.rm2 extensions.zip”合并再解压。 包合以下插件: wholroyd.jinja-0.0.8 daltonjorge.scala-0.0.5 eriklynd.json-tools-1.0.2 truman.autocomplate-shell-0.1.1 sensourceinc.vscode-sql-beautify-0.0.4 danields761.dracula-theme-from-intellij-pythoned-0.1.4 gerane.theme-druid-0.0.2 luqimin.forgive-green-0.2.1 mohsen1.prettify-json-0.0.3 chrmarti.regex-0.2.0 kalitaalexey.vscode-rust-0.4.2 ZakCodes.rust-snippets-0.0.1 itryapitsin.scala-0.1.7 itryapitsin.scalasnippets-0.1.7 vahidk.tensorflow-snippets-0.3.3 formulahendry.terminal-0.0.10 qub.qub-xml-vscode-1.2.8 waderyan.nodejs-extension-pack-0.1.9 jasonnutter.search-node-modules-1.3.0 christian-kohler.path-intellisense-1.4.2 christian-kohler.npm-intellisense-1.3.0 josephtbradley.hive-sql-0.0.4 magicstack.magicpython-1.1.0 ms-python.anaconda-extension-pack-1.0.1 mooman219.rust-assist-0.2.3 slevesque.vscode-hexdump-1.7.2 coenraads.bracket-pair-colorizer-1.0.61 bibhasdn.django-snippets-1.1.1 bibhasdn.django-html-1.3.0 octref.vscode-json-transform-0.1.2 xabikos.javascriptsnippets-1.7.2 jithurjacob.nbpreviewer-1.2.2 kondratiev.sshextension-0.5.0 humy2833.ftp-simple-0.7.0 batisteo.vscode-django-0.19.0 fwcd.kotlin-0.1.13 reditorsupport.r-lsp-0.1.0 ms-vsts.team-1.149.2 donjayamanne.jupyter-1.1.5 rust-lang.rust-0.6.1 grapecity.gc-excelviewer-2.1.32 vscjava.vscode-java-pack-0.7.1 ms-toolsai.vscode-ai-0.5.1 dbaeumer.vscode-eslint-1.9.0 ms-vscode.azure-account-0.8.4 rogalmic.bash-debug-0.3.5 donjayamanne.python-extension-pack-1.6.0 redhat.vscode-yaml-0.4.1 adisreyaj.swagger-snippets-0.0.1 alefragnani.bookmarks-10.4.4 arjun.swagger-viewer-2.2.2 dotjoshjohnson.xml-2.5.0 fisheva.eva-theme-0.7.7 vscjava.vscode-java-dependency-0.5.1 deerawan.vscode-hasher-1.0.1 vscjava.vscode-java-debug-0.20.0 scala-lang.scala-0.3.4 eg2.vscode-npm-script-0.3.8 vscjava.vscode-maven-0.18.1 ms-vscode.go-0.11.4 lextudio.restructuredtext-113.0.0 pkief.material-icon-theme-3.8.1 ms-azuretools.vscode-docker-0.7.0 redhat.java-0.47.0 julialang.language-julia-0.12.0 ms-kubernetes-tools.vscode-kubernetes-tools-1.0.2 yzhang.markdown-all-in-one-2.4.2 ms-vscode.cpptools-0.24.1 davidanson.vscode-markdownlint-0.30.1 zhuangtongfa.material-theme-2.26.3 formulahendry.code-runner-0.9.12 ikuyadeu.r-1.1.1 bitlang.cobol-5.2.4 vscjava.vscode-java-test-0.19.0 humao.rest-client-0.22.0 ms-ceintl.vscode-language-pack-zh-hans-1.37.3 ms-ceintl.vscode-language-pack-zh-hans-1.37.5 mtxr.sqltools-0.20.1 ms-vscode-remote.remote-wsl-0.39.2 alefragnani.bookmarks-10.5.0 ms-vsliveshare.vsliveshare-1.0.694 visualstudioexptteam.vscodeintellicode-1.1.9 ms-python.python-2019.8.30787 coenraads.bracket-pair-colorizer-2-0.0.28 dart-code.flutter-3.3.0 dart-code.dart-code-3.3.0 ibm.db2connect-win-1.0.2 oderwat.indent-rainbow-7.4.0 ms-vscode-remote.vscode-remote-extensionpack-0.16.0 ms-vscode-remote.remote-ssh-0.45.5 ms-vscode-remote.remote-ssh-edit-0.45.5 ms-vscode-remote.remote-containers-0.67.3 ms-vscode-remote.remote-ssh-explorer-0.45.5 foxundermoon.shell-format-6.1.1 qcz.text-power-tools-1.11.1 gruntfuggly.todo-tree-0.0.141 vscode-icons-team.vscode-icons-9.2.0 tomoki1207.pdf-0.5.0

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值