flask之jinjia2模板
一:渲染模板
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模板的更多相关文章
- flask中jinjia2模板引擎详解4
接上文 For循环 和其它编程语言一样,for用来编辑列表中的项.下面以一个例子来说明for在flask的jinjia2模板中的使用. 创建一个模板list.html 代码如下{% extends & ...
- flask中jinjia2模板引擎使用详解1
在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活.快速和安全的. 模 ...
- flask之jinjia2模板语言
flask_jinjia2.py ''' flask中的jinjia2模板语言(和django中模板类似): (1)模板变量{{ }} (2)模板标签{% %} ①for循环遍历 {% for foo ...
- flask中jinjia2模板使用详解2
接上文 注释的使用 在jinjia2模板中,使用{# #}进行代码注释,如下所示 运行后发现,注释不会被render出来 去掉空行 两种方法可以去掉jinjia2模板中的空白行,一是设置jinjia2 ...
- flask中jinjia2模板引擎详解3
接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...
- flask之jinjia2模板(二)
1.1.模板传参 (1)主程序 from flask import Flask,render_template app = Flask(__name__) @app.route('/') def he ...
- flask中jinjia2模板引擎使用详解5
接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%} 下面引用 ...
- 7、Flask实战第7天:Jinjia2模板
Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
随机推荐
- Linux内核调试方法总结之backtrace
backtrace [用途]用户态或者内核态程序异常退出时回溯堆栈信息 [原理]通过对当前堆栈的分析,回溯上层函数在当前栈中的帧地址,直至顶层函数.帧地址是指在栈中存在局部变量.上一级函数返回地址.寄 ...
- EXCEL生成随机密码函数
CHAR(INT(RAND()*26+65))&INT(RAND()*9+1)&CHAR(INT(RAND()*26+97))&INT(RAND()*900+100)& ...
- DRF中的视图集的使用
1.说明:DRF框架中的视图集: 在drf开发接口中,使用GenericAPIView和视图扩展类结合起来完成接口功能是一件很常见的事情,所以,drf的作者帮我们提前把 GenericAPIView ...
- 006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories
续 二.Elasticsearch Repositories 2.1.简介 2.1.1.Spring命名空间 Spring Data Elasticsearch模块包含一个允许定义存储库bean的自定 ...
- Week 7 - 714. Best Time to Buy and Sell Stock with Transaction Fee & 718. Maximum Length of Repeated Subarray
714. Best Time to Buy and Sell Stock with Transaction Fee - Medium Your are given an array of intege ...
- delphi 函数isiconic 函数 判断窗口是否最小化
http://blog.sina.com.cn/s/blog_66357ab901012t2h.html delphi 函数isiconic 函数 判断窗口是否最小化 (2012-05-26 22:0 ...
- LeetCode——160 Intersection of Two Linked Lists
题目 Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 Output: ...
- 获取文件夹中前N个文件
@echo off set input="list.txt" set srcDir="%1" set /a fileCount=10 set /a curInd ...
- Java -Tips
1. /* xxxx */表示多行注释,双斜杠开始表示单行注释.多行注释的快捷键: 先选中多行代码,然后按下ctrl+/就可以把选中的多行代码给注释掉.
- new String创建了几个对象
String str = new String(“abc”) 到底创建了几个对象? 首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String(& ...