zoukankan      html  css  js  c++  java
  • 【02】flask之jinja2模板查找路径及关键字传参

    一、Flask渲染Jinja模板

    • jinja2模板介绍和查找路径

      要渲染一个模板,通过render_template方法即可

      ①默认路径 

    from flask import Flask,render_template
    
    #指定templates路径
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        return render_template('index.html')if __name__ == '__main__':
        app.run(host='127.0.0.1',port=5000,debug=True)

      ②指定路径 

      如果想更改模板文件地址,应该在创建app的时候,给Flask传递一个关键字参数template_folder,指定具体的路径

    from flask import Flask,render_template
    
    #指定templates路径
    app = Flask(__name__,template_folder=r'D:\untitled\flask_env\templates')
    
    @app.route('/')
    #@app.route,是一个装饰器
    #@app.route('/')就是将url中的/映射到hello_world这个视图函数上面
    def index():
        return render_template('index.html')
    
    @app.route('/huashu/')
    def huashu():
        return render_template('posts/huashu.html')
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1',port=5000,debug=True)
    • jinja2模板传参及其技巧

      ①单个关键字传参,代码如下:

      --python--

    from flask import Flask,render_template
    
    #指定templates路径
    app = Flask(__name__,template_folder=r'D:\untitled\flask_env\templates')
    
    #传递单个参数
    @app.route('/lvzhi/')
    def lvzhi():
        return render_template('posts/lvzhi.html',name='绿植')
    
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1',port=5000,debug=True)

      --HTML-- 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>网红绿植</title>
    </head>
    <body>
        <h1>网红绿植</h1>
        花样介绍
        <p>{{name}}</p>
    
    </body>
    </html>

      ②多个关键字传参,代码如下:

      --python--

    from flask import Flask,render_template
    
    #指定templates路径
    app = Flask(__name__,template_folder=r'D:\untitled\flask_env\templates')
    
    @app.route('/')
    #@app.route,是一个装饰器
    #@app.route('/')就是将url中的/映射到hello_world这个视图函数上面
    def index():
        return render_template('index.html')
    
    @app.route('/huashu/')
    #传递多个参数
    def huashu():
        context={
            'name':'鲜花',
            'price':'¥215',
            'describe':{
                'variety1':'玫瑰',
                'variety2': '百合'
            }
        }
        return render_template('posts/huashu.html',**context)
    
    #传递单个参数
    @app.route('/lvzhi/')
    def lvzhi():
        return render_template('posts/lvzhi.html',name='绿植')
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1',port=5000,debug=True)

      --HTML-- 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>鲜花超市</title>
    </head>
    <body>
        <h1>鲜花超市</h1>
        花样介绍
        <p>{{name}}</p>
        <p>{{price}}</p>
        <p>{{describe.variety1}}</p>
        <p>{{describe['variety2']}}</p>
    
    </body>
    </html>
  • 相关阅读:
    双列集合
    单列集合
    Comparable和Comparator的区别
    用友U8 |【固定资产】固定资产生成凭证,点完计提折旧后没有凭证出来
    用友U8 |【应收管理】为什么在应收模块弃审销售发票,弃审不成功?
    用友U8 | 【总账】应收核销明细报错,提示:将截断字符串或二进制数据
    用友U8 | 【网上银行】网上银行模块网银支付后台字段说明
    用友U8 | 【实施导航】引入交易单位档案,提示:账号不能为空!
    用友U8 | 【实施导航】已经创建的人员档案,如何更新维护银行信息
    用友U8 |【合同管理】合同结算单不能失效
  • 原文地址:https://www.cnblogs.com/qingbaobei7370/p/11330809.html
Copyright © 2011-2022 走看看