Flask框架学习(二)

六、模板

模板文件就是按照特定的规则属性的负责展示效果的HTML文件;模板引擎就是提供特定转换和解析的工具。


6.1.模板渲染
from flask import Blueprint, render_template
在templates目录下创建一个模板文件index.html
在views中渲染模板 render_tempate('index.html')
<--index.html/-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>武汉加油</h1>
<p>{
  { name }}</p>
</body>
</html>
# views.py
from flask import Blueprint, render_template

bp = Blueprint('bp',__name__,url_prefix='/bp')

@bp.route('/')
def hello_world():
    #return 'Hello World!'
    #1.固定值传参
	return render_template('index.html',name='钟南山')
 	render_template用法:
    # 第一个参数模板文件名,
    # 后面可以任意多个关键字参数,一个参数对应模板中一个变量
    
    eg:
    # 2.传递所有的局部变量到模板,locals()是一个字典,包含了所有的局部变量
     name = '国士无双'
     return render_template('index.html',**locals())
   
    # 3.关键字参数传递
    # return render_template('index.html',name='米老鼠')
    
    # 4.传字典
    return render_template('index.html',**{
   'name':'唐老师'})
6.2.变量

变量在模板中的表示为: { { 变量名 }},变量名就是render_template中提供的参数。

变量的基本类型:
数值、字符串、布尔,也可以是字典、对象、列表等。

jinja2提供了点号或[]来访问复杂数据结构

注意:

​ 变量就是视图函数传递给模板的数据

​ 变量要遵循标识符的命名规则

​ 如果模板中的变量不存在则插入空字符串

# views.py

from flask import Blueprint, render_template

from user import User

bp = Blueprint('bp',__name__,url_prefix='/bp')

@bp.route('/var/')
def render_vars():
    age = 20
    list1 = [20,98,76]
    dict1 = {
   'name':'tom','age':30}
    user = User('中国',71)
    return render_template('vars.html',**locals())
<--vars.html/-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量</title>
</head>
<body>
<p>{
  { age }}</p>
<p>列表</p>
<p>{
  { list1.0 }}---{
  { list1[1] }}</p>

<p>字典</p>
<p>
    {
  { dict1['name']}} --- {
  { dict1.name }}
</p>
    
<p>自定义对象</p>
<p>{
  { user.name }}--{
  { user.age }}</p>
</body>
</html>
#user.py

class User:
    def __init__(self,name,age):
        self.name = name
        self.age = age
6.3过滤器

过滤器:变量可以通过 过滤器 修改。

过滤器与变量⽤管道符号( | )分割,并且也 可以⽤圆括号传递可选参数。

多个过滤器可以链式调⽤,前⼀个过滤器的输出会被作为 后⼀个过滤器的输⼊

使⽤: {
   {
    name | upper }} ,转换为全⼤写输出
常⽤过滤器:
过滤器 说明
upper 全大写
lower 全小写
title 每个单词首字母大写
capitalize 首字母大写
trim 去掉两边的空白
striptags 过滤掉HTML标签
safe 渲染是不转义
#views.py

@bp.route("/filter/")
def my_filter():
    name = 'tom'
    content = "<h1>过滤器</h1>"
    return render_template('filter.html',**locals())
<--filter/-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器</title>
</head>
<body>
<p>
        过滤器
    {
  { name | upper }}
</p>
<p>
    <p>safe不会不会把变量的内容的标签转义</p>
    {
  { content | safe}}
<p>autoescap可以把多个变量视为安全,不转义内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值