Python Flask学习笔记之模板
Python Flask学习笔记之模板
Jinja2模板引擎
默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板。Flask提供的render_template函数把Jinja2模板引擎集成到了程序中。
渲染模板
创建文件夹
mkdir app/templates
改写代码
# routes.py
from flask import render_template
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s</h1>' % name
@app.route('/template')
def template_test():
user = {'username':'Mark'}
return render_template('template.html',user=user)
变量
# template.html
<h1>Hello, {{ user.username }}!</h1>
访问http://127.0.0.1:5000/template,显示Hello, Mark!
控制结构
- 条件控制语句
{% if user %}
Hello, {{ user }}
{% else %}
Hello, Stranger!
{% endif %}
for循环
<ul>
{% for comment in comment %}
<li>{{ comment }}</li>
{% endfor %}
</ul>
- 宏,类似
Python代码中的函数
{% macro render_comment(comment) %}
<li>{{ comment }}</li>
{% endmacro %}
<ul>
{% for comment in comments %}
{{ render_comment(comment)}}
{% endfor %}
</ul>
为了重复使用宏,可以将其保存在单独的文件中,然后在需要使用的模板中导入
{% import 'macros.html' as macros %}
<ul>
{% for comment in comments %}
{{ render_comment(comment)}}
{% endfor %}
</ul>
- 继承
# base.html
<!DOCTYPE html>
<html>
<head>
{% if title %}
<title>{{ title }} - mark</title>
{% else %}
<title>welcome to mark's blog</title>
{% endif %}
</head>
<body>
<div>mark's blog <a href="/index">Home</a></div>
<hr>
{% block content %}{% endblock %}
</body>
</html>
# index.html
{% extends "base.html"%}
{% block content %}
<h1>Hi, {{ user.username }}!</h1>
{% for post in posts %}
<div><p>{{ post.author.username }} says: <b>{{ post.body }}</b></p></div>
{% endfor %}
{% endblock %}
block控制语句用来定义派生模板可以插入代码的位置。 block被赋予一个唯一的名称,派生的模板可以在提供其内容时进行引用。extends语句用来建立了两个模板之间的继承关系,这样Jinja2才知道当要求呈现index.html时,需要将其嵌入到base.html中。 而两个模板中匹配的block语句和其名称content,让Jinja2知道如何将这两个模板合并成在一起。
Python Flask学习笔记之模板的更多相关文章
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
- Python Flask学习笔记(1)
1.搭建虚拟环境 a. 安装 virtualenv : pip3 install virtualenv b. 建立虚拟环境 : 任意目录下建立一个空文件(我的是 Py_WorkSpace) ,在该文件 ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- OpenCV 学习笔记(模板匹配)
OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- 获取字段唯一值工具- -ArcPy和Python案例学习笔记
获取字段唯一值工具- -ArcPy和Python案例学习笔记 目的:获取某一字段的唯一值,可以作为工具使用,也可以作为函数调用 联系方式:谢老师,135-4855-4328,xiexiaokui# ...
- Python高级学习笔记
Python高级学习笔记,此笔记中包含Linux操作系统.Html+CSS+JS.网络协议等. 所有思维导图为本人亲手所画,请勿用于商用. 大哥们,求点赞哦. 第一天笔记:链接 第二天笔记:链接 第三 ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
随机推荐
- Spring开始
Spring 主要作用:spring的主要作用是解耦,降低代码间的耦合度(指降低类和类之间的耦合度).根据功能的不同,可以将系统中的代码分成主业务逻辑和系统级业务逻辑两类.Spring根据代码功能的特 ...
- Git安装配置,和使用的简介
方案1:安装Git和TortoiseGit,使用TortoiseGit的图形化界面管理项目代码 材料准备: Git安装包 TortoiseGit安装包 注:包资源,可疑百度搜索,在Git官网下载 安装 ...
- AVL树实现记录
https://github.com/xieqing/avl-tree An AVL Tree Implementation In C There are several choices when i ...
- 在Html页面中调用ajax代码
以最原始的XMLHttpRequest形式,实现ajax. 封装的方法 1 /** 2 * 发送一个 AJAX 请求 3 * @param {String} method 请求方法 4 * @para ...
- vue props命名最好直接使用kebab-case (短横线隔开式) 命名
vue官方解释,props使用驼峰命名的话,在html中使用时也需要转化成短横线命名,否则报错.个人比较喜欢上下文统一,直接在props命名时就把它命名成短横线隔开式吧.
- python读取es中的所有数据并计算md5然后进行持久化
#!/usr/bin/python import threading import json import time from elasticsearch import Elasticsearch f ...
- python 基础 ----- 常用的方法
one.将英文字符设置大小写 upper() :将英文字符设置大写 lower() :将英文字符设置小写 two.去掉字符串的首尾空格 不能去除字符串中间的空格偶 strip() : 去掉 ...
- sql基本的增删查改语句
1.增---用于向表中插入新的行/数据 语法:insert into 表名(值1,值2,值3...) values(值1,值2,值3,...) 或者 语法:insert [into] <表名&g ...
- 重温IO
IO就是输入输出,输出流可以理解为向目标写入数据,输入流可以理解为从源地址读取.流是一组有序的数据序列. 输入流 输出流 字节流 InputStream OutputStream 字符流 Read ...
- Oracle lag()/lead() over()分析函数
with tmp as(select '1' id ,'aa' name ,'22' age from dual union allselect '2' id ,'bb' name ,'20' age ...