Flask入门(二)Jinja2 模板
来源:互联网 发布:阿里云提供的服务 编辑:程序博客网 时间:2024/05/16 13:41
Flask渲染Jinja2模板和传参:
1.如何渲染模板:
模板放在‘templates’文件夹下。
从‘flask’中导入‘render_template’函数。
- 在视图函数中,使用‘render_template’函数渲染模板。注意:只需要填- 写模板的名字,不需要写‘template’文件夹的名字。因为flask框架会自动调用该文件夹。(但如果是template内的目录内的文件则需要一个相对目录路径)
2.模板传参:
- 如果只有一个或者少量参数,直接在‘render_template’函数中添加关键字参数就可以了。
from flask import Flask , render_templateapp = Flask(__name__)@app.route('/')def index(): return render_template('index.html',username = 'noah')
- 如果有多个参数,那么可以把所有参数放在字典中。
- 在模板中如果要使用一个变量,HTML语法是:{{pramas}}。
- 访问模型中的属性或字典,可以通过‘{{pramas.name}}’的形式,或是用’{{pramas{[‘age’]}}’形式。
<body> 就像下面这样: <p>用户名:{{ username }}</p> <p>年龄:{{ age }}</p> <p>性别:{{ gender }}</p> <hr>#hr是分割线 <p>用户名:{{ person.name }}</p> <p>用户名:{{ person.age }}</p> <hr> <p>百度:{{ websites.baidu }}</p> <p>谷歌:{{ websites.google }}</p></body>
- 然后在‘render_template’中用**两个星号把字典转化为关键字参数。
from flask import Flask , render_templateapp = Flask(__name__)@app.route('/')def index(): context={ 'username' : 'noah', 'age' : '19', 'gender' : 'male' 'person' : p, 'websites' : { 'baidu': 'www.baidu.com', 'google': 'www.google.com' } } #直接写名字,不用写templates文件夹的名字,Flask会自动去这个文件夹寻找 return render_template('index.html',**context)
3.If判断句
HTML中语法
{% if xxx %}
{% eles %}
{% endif %}
*if的使用和python相差无几
4.for循环遍历
HTML中语法
遍历字典:
*和python相差无几
可以使用
keys(),items(),values(),iteritems(),iterkeys(),itervalues()
{% for k,v in user.items() %} <p>{{ k }}:{{ v }}</p>{% endfor %}
遍历列表也一样:
{% for website in websites %} <p>{{ website }}</p>{% endfor %}
一个小案例,渲染四大名著给前端,然后前端用表格显示:
{# HTML内代码 #}<table>{# Table 表格 #} <thead>{# Tablehead 表头 #} <th>书名</th>{# 表头1 #} <th>作者</th>{# 表头2 #} <th>价格</th>{# 表头3 #} </thead> <tbody> {% for book in books %}{# Tablebody 对应内容 #} <tr> <td>{{ book.name }}</td>{# 数据1 #} <td>{{ book.author }}</td>{# 数据2 #} <td>{{ book.price }}</td>{# 数据3 #} </tr>
#Flash内代码def index(): books =[{ #生成List,List内有Dict 'name' : '西游记', 'author' : '吴承恩', 'price':109, }, { 'name' : '红楼梦', 'author' : '曹雪芹', 'price':200, },{ 'name': '三国演义', 'author': '罗贯中', 'price': 99, },{ 'name': '水浒传', 'author': '施耐庵', 'price': 150, }] return render_template('index.html',books=books)
过滤器
- 介绍:过滤器可以处理一些变量,把原始的变量经过处理后再展示出来。作用的对象是变量。
语法:
{{avatar| default('xx默认值xx')| length}}
常用过滤器:
1、default:如果当前变量不存在则使用默认值。
2、length:求List或者Dict或者字符串或者元组的长度。
继承和block
继承的作用:可以把一些公共的代码放在公共模板中,避免写重复的代码。
继承的实现:
{% extends 'basic.html' %}{#这样就会把'basic.html'完全复制过来#}
block的实现:
{#在父模板中设置block#}{% block main %}{% endblock %}{% block head %}{% endblock %}{% block title %}{% endblock %}{#在字模板中输入同样的内容,并且把要加入的内容写进去#}{% block main %}内容{% endblock %}{% block head %}样式{% endblock %}{% block title %}标题{% endblock %}
block的作用: 可以让子模板实现一些自己的需求,父模板必须提前定义好。当然内容一定要写在block内。
url链接
作用:使用url_for(‘视图函数名称’)可以反转成url地址
加载静态文件
1、语法:url_for(‘static’,filename=‘路径’)。
2、加载静态文件:Flask会从static开始寻找,不用再写static路径。
3、可以加载css文件,js文件,image文件。
{#CSS#}<link rel="stylesheet" href="{{url_for('static',filename='css/index.css') }}">{#JavaScript#}<script src="{{ url_for('static',filename='js/index.js') }}"></script>{#Image#}<img src="{{ url_for('static',filename='images/LOGO.jpeg') }}" alt="">
阅读全文
1 0
- Flask入门(二)Jinja2 模板
- Flask(Jinja2) 服务端模板注入漏洞
- Flask Jinja2模板
- Flask零基础到项目实战(三)Jinja2模板系统 (二)
- Flask学习总结笔记(4)-- Jinja2模板引擎之二
- Flask web 开发 Jinja2 模板
- Flask中的Jinja2模板使用
- Flask-Jinja2模板学习总结
- Flask学习总结笔记(3)-- Jinja2模板引擎之一
- Flask系列教程(3)——Jinja2模板
- Flask模板引擎——Jinja2
- Python学习:Flask框架和jinja2模板
- flask jinja2
- flask--jinja2
- Flask笔记(2)--flask的jinja2模板引擎
- 模板(Jinja2+bootstrasp)
- 用flask开发个人博客(9)—— Jinja2模板中的变量
- 用flask开发个人博客(10)—— Jinja2模板中的控制结构
- wordpress出现Error establishing a database connection
- 程序的入口和出口
- HTML基础--基础标签
- FYN OI奋斗之路9~
- Leetcode [Palindrome Number]
- Flask入门(二)Jinja2 模板
- MyBatis异常java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for
- 初探Dagger2遇到的小坑
- No configuration found for the specified action:问题
- 4种常见的osgi框架比较
- Android小白常识
- 按国家归类的海淘网站大全
- JavaScript 一点都不简单
- 第二次测试中出现的知识不足