Flask框架学习之jinja2模板

flask渲染jinja2模板和传参:

1、如何渲染模板:

  • 模板放在“template”文件夹下。

  • 从flask导入render_template函数。

  • 在视图函数中,使用“render_template”。

2、模板传参:

  • 如果只有一个或少量参数,直接在render_template函数中添加关键字参数就可以了。

  • 如果有多个参数时,那么可以把所有参数放在字典中,然后在render_template函数中使用**两个星号,把字典转换成关键字参数传递进去,这样的代码更方便管理和使用。

3、在模板中如果要使用一个变量,语法是{{params}}

4、访问模型中的属性或字典,可以通过{{params.property}}的形式,或者采用{{params[property]}}

代码示例

from flask import Flask,redirect,url_for,render_template
@app.route('/index')
def index():
    #通过字典传参
  class Person():
        name='黄兴'
        age=20 
  context={
        'sex':'man',
        'age':'18',
        'name':'lianghao'
        'website':{
            'baidu':'www.baidu.com',
            '淘宝':'www.taobao.com'
        }
    }
    return render_template('index.html',**context)

模板:




    
    Title


大家好!我是{{person.name}},我的年龄是{{ person.age }},我的性别是{{ sex }},喜欢{{website.baidu}},不喜欢{{ website['淘宝'] }}


if判断

1、语法示例:

@app.route('/ifstatement//')
def ifstatement(number):
    context = {
        'username': 'lianghao',
        'city': 'fuqing',
        'age': 18
    }
    if number=='1':
        return render_template('if_statement.html', context=context)
    else:return '测试'

模板:

    {% if context and context.age>17 %}
        姓名:{{ context.username }}
        城市:{{context.city }}
    {% else %}
        test
    {% endif %}

for循环遍历列表和字典

    context = {
        'username': 'lianghao',
        'city': 'fuqing',
        'age': 18
    }
    name=['tom','jack','snack','james']

模板:

    {% endif %}
    {% for k in context %}
        {{ k }}{{ context[k] }}
    {% endfor %}
    {% for i in name %}
        {{ i }}
    {% endfor %}

过滤器

1、介绍

过滤器可以处理变量,把原始的变量经过处理后再展示出来,作用的对象是变量
default过滤器:如果当前变量不存在,可以指定默认值

2、代码示例

变量woerver,但不传入模板中,再模板中使用default过滤器
列表name,导入模板,但在模板中使用name[5],使得default过滤器生效

@app.route('/ifstatement//')
def ifstatement(number):
    context = {
        'username': 'lianghao',
        'city': 'fuqing',
        'age': 18
    }
    woerwer='1234'
    name=['tom','jack','snack','james']
    if number=='1':
        return render_template('if_statement.html', context=context,name=name)
    else:return '测试'

模板:

    {{ name[5]|default('dadadaaada') }}
    {{ woerwer|default('35',false) }}

继承和block

1、继承的作用和语法

继承可以把一些公共的代码放在父模板中,避免每个模板写同样的代码
语法:

{%extends 'base.html'%}

2、block的实现

作用:可以让子模板实现一些自己的需求,父模板需要提前定义好。
注意点:子模板的代码,必须放在block块中
父模板:

<%block xxxx%>
<%endblock%>

子模板:

<%block xxxx%>
<%endblock%>

URL链接

使用url_for('')反转

登录

加载静态文件

语法:
url_for('static',filename='路径')
从static文件夹开始寻找,可以加载CSS、JS、IMAGE文件

加载CSS文件

![](url_for('static',filename='images/notebook.png'))

加载图片

    
    Title
    加载JS脚本

你可能感兴趣的:(Flask框架学习之jinja2模板)