一:渲染模板

app.run(debug=True)  开启debug模式,flask框架自动提示错误提示的页面显示。

视图函数

from flask import Flask
from flask import request
from flask import redirect
from flask.ext.script import Manager
from flask import render_template app = Flask(__name__) @app.route("/user/<name>")
def user_name(name):
return render_template("user.html", name=name) # 第一个name是html中的占位符,第二个name是函数的形参 if __name__ == "__main__":
app.run()

前端模板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
// 这里必须和大括号之间空一个空格
<h1>hello,{{ name|capitalize }}!</h1>
<h1>hello,{{ name|capitalize }}!</h1> </body>
</html>

访问 127.0.0.1:5000/user/zhang 显示:

二:模板变量

  前端里面的{{ name }} 就是一个占位符,@app.route("/user/<name>")  name是一个可变可接受的参数,浏览器传递给视图函数,视图函数通过形参,传给给模板,模板再传递给user.html中的name展位符。

  

三:控制结构

@app.route("/user/<id>")
def user_name(id):
if id == "":
info = {"name":"zhang"}
   return render_template("user.html", user=info)
   else:
    return "不符合"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% if user %} # if 语句
Hello,{{ user }}! # 变量占位符
{% else %} # else语句
Hello,Strange!
{% endif %} # 结束if语句 </body>
</html>

输入:127.0.0.1:5000/user/1显示:

输入:127.0.0.1:5000/user/2显示:

四:循环结构

  满足条件后,给jinjin2模板传递列表,进行循环遍历

@app.route("/user/<id>")
def user_name(id):
if id == "":
li = ["zhang","wang","li","zhao"]
return render_template("user.html",comments=li)
else:
return "不符合"
<ul>
{% for comment in comments %}
<li>{{ comment }}</li>
{% endfor %}
</ul>

需求:把 zhang变成红色,wang变成橙色,li变成黄色,zhao变成绿色。类似于下图的样子

<ul>
{% for comment in comments %}
{% if loop.index == 1 %}
<li style="background: red">{{ comment }}</li>
{%endif%} {% if loop.index == 2 %}
<li style="background: blue">{{ comment }}</li>
{%endif%} {% if loop.index == 3 %}
<li style="background: yellow">{{ comment }}</li>
{%endif%} {% if loop.index == 4 %}
<li style="background: green">{{ comment }}</li>
{%endif%} {% endfor %}
</ul>

小技巧:

五:宏

六:抽取

flask之jinjia2模板的更多相关文章

  1. flask中jinjia2模板引擎详解4

    接上文 For循环 和其它编程语言一样,for用来编辑列表中的项.下面以一个例子来说明for在flask的jinjia2模板中的使用. 创建一个模板list.html 代码如下{% extends & ...

  2. flask中jinjia2模板引擎使用详解1

    在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活.快速和安全的. 模 ...

  3. flask之jinjia2模板语言

    flask_jinjia2.py ''' flask中的jinjia2模板语言(和django中模板类似): (1)模板变量{{ }} (2)模板标签{% %} ①for循环遍历 {% for foo ...

  4. flask中jinjia2模板使用详解2

    接上文 注释的使用 在jinjia2模板中,使用{# #}进行代码注释,如下所示 运行后发现,注释不会被render出来 去掉空行 两种方法可以去掉jinjia2模板中的空白行,一是设置jinjia2 ...

  5. flask中jinjia2模板引擎详解3

    接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...

  6. flask之jinjia2模板(二)

    1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def he ...

  7. flask中jinjia2模板引擎使用详解5

    接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%}   下面引用 ...

  8. 7、Flask实战第7天:Jinjia2模板

    Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...

  9. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

随机推荐

  1. 标签button:点击button按钮时,出现了页面自动刷新的情况

    原html: <button class="btn btn-primary" id="btnSubmit" name="btnSubmit&qu ...

  2. gsensor方向调试【转】

    本文转载自:http://blog.csdn.net/guoguo295/article/details/19545089 版权声明:本文为博主原创文章,未经博主允许不得转载. 以下说明主要是针对gs ...

  3. WeakHashMap 源码分析

    WeakHashMap WeakHashMap 能解决什么问题?什么时候使用 WeakHashMap? 1)WeakHashMap 是基于弱引用键实现 Map 接口的哈希表.当内存紧张,并且键只被 W ...

  4. pve-备份

    一个50g的磁盘,用了13分钟 INFO: starting new backup job: vzdump 111 --node cu-pve04 --mode snapshot --compress ...

  5. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第7节 内部类_7_内部类的概念与分类

    完整

  6. 关于staticmethod() 函数

    说实话,我就不知这个是干什么的. 菜鸟教程写的无需实例化, 自己可以调用自己. 在同一个类面我使用到了 因为一个类了, 我可能会方法间互相调用. 类中间使用.不加这个,就会报错.无法识别这个 orig ...

  7. python 正则表达式 re.sub & re.subn

    Grammar: re.sub(pattern, repl, string[, count]) 使用repl替换string中每一个匹配的子串后返回替换后的字符串.当repl是一个字符串时,可以使用\ ...

  8. 【Unity Shader】---入门知识点

    着色器声明(“名字”)Shader "ShaderDiffuseExample" { 一.属性定义(作用:外部传入参数) 属性定义语法:PropName("Display ...

  9. SpringBoot 使用maven创建springboot项目

    有两种方式可以创建  1是使用spring-boot-starter-parent ,2是使用spring-boot-dependencies (即父项目dependencyManagement) ( ...

  10. (4.30)全面了解触发器:DML、DDL、LOGON触发器

    DML.DDL.LOGON触发器 转自:https://www.cnblogs.com/seusoftware/p/9120632.html 触发器可以理解为由特定事件触发的存储过程, 和存储过程.函 ...