• Flask web开发之路五


    Jinjia2模板

    紧接着上篇博客,接下去写if条件判断和for循环遍历以及过滤器

    if条件判断

    主app文件代码:

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    
    @app.route('/<is_login>/')
    def index(is_login):
        if is_login == '1':
            user = {
                'username':'hyq',
                'age':19
            }
            return render_template('index.html',user=user)
        else:
            return render_template('index.html')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    index.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {% if user and user.age > 18 %}
            <a href="#">{{ user.username }}</a>
            <a href="#">注销</a>
        {% else %}
            <a href="#">登录</a>
            <a href="#">注册</a>
        {% endif %}
    </body>
    </html>

    ### if判断:
    1. 语法:
    ```
    {% if xxx %}
    {% else %}
    {% endif %}
    ```
    2. if的使用,可以和python中相差无几。

    前端显示:

    条件判断,简单的

     for循环遍历

    主app代码:

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    # # for遍历字典
    # @app.route('/')
    # def index():
    #     user = {
    #         'username':'hyq',
    #         'age':18
    #     }
    #     websites = ['baidu.com','google.com']
    #     return render_template('index.html',user=user,websites=websites)
    
    @app.route('/')
    def index():
        books = [
            {
                'name':'西游记',
                'author':'吴承恩',
                'price':109
            },
            {
                'name': '水浒传',
                'author': '施耐庵',
                'price': 87
            },
            {
                'name': '红楼梦',
                'author': '曹雪芹',
                'price': 125
            },
            {
                'name': '三国演义',
                'author': '罗贯中',
                'price': 104
            }
        ]
        return render_template('index.html',books = books)
    
    if __name__ == '__main__':
        app.run(debug=True)

    index.html代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    {#     {% for k,v in user.items() %}#}
    {#        <p>{{ k }}:{{ v }}</p>#}
    {#    {% endfor %}#}
    {#    {% for website in websites %}#}
    {#        <p>{{ website }}</p>#}
    {#    {% endfor %}#}
    <table>
        <thead>
            <th>书名</th>
            <th>作者</th>
            <th>价格</th>
        </thead>
        <tbody>
            {% for book in books %}
                <tr>
                    <td>{{ book.name }}</td>
                    <td>{{ book.author }}</td>
                    <td>{{ book.price }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    </body>
    </html>

    上面注释部分是字典和列表的遍历形式

    ### for循环遍历列表和字典:
    1. 字典的遍历,语法和`python`一样,可以使用`items()`、`keys()`、`values()`、`iteritems()`、`iterkeys()`、`itervalues()`
    ```
    {% for k,v in user.items() %}
    <p>{{ k }}:{{ v }}</p>
    {% endfor %}
    ```
    2. 列表的遍历:语法和`python`一样。
    ```
    {% for website in websites %}
    <p>{{ website }}</p>
    {% endfor %}
    ```

    过滤器

    主app文件代码:

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        comments = [
            {
            'user':'hyq',
            'content':'xxxx'
        },
            {
                'user': 'young',
                'content': 'xxxx'
            }
            ]
    
        return render_template('index.html',comments= comments)
                               #avatar='http://img.bss.csdn.net/201707242137463745.jpg')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    index.html文件代码;

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        comments = [
            {
            'user':'hyq',
            'content':'xxxx'
        },
            {
                'user': 'young',
                'content': 'xxxx'
            }
            ]
    
        return render_template('index.html',comments= comments)
                               #avatar='http://img.bss.csdn.net/201707242137463745.jpg')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    ### 过滤器:
    1. 介绍和语法:
    * 介绍:过滤器可以处理变量,把原始的变量经过处理后再展示出来。作用的对象是变量。
    * 语法:
    ```
    {{ avatar|default('xxx') }}
    ```
    2. default过滤器:如果当前变量不存在,这时候可以指定默认值。
    3. length过滤器:求列表或者字符串或者字典或者元组的长度。
    4. 常用的过滤器:
    abs(value):返回一个数值的绝对值。示例:-1|abs
    default(value,default_value,boolean=false):如果当前变量没有值,则会使用参数中的值来代替。示例:name|default('xiaotuo')——如果name不存在,则会使用xiaotuo来替代。boolean=False默认是在只有这个变量为undefined的时候才会使用default中的值,如果想使用python的形式判断是否为false,则可以传递boolean=true。也可以使用or来替换。
    escape(value)或e:转义字符,会将<、>等符号转义成HTML中的符号。示例:content|escape或content|e。
    first(value):返回一个序列的第一个元素。示例:names|first
    format(value,*arags,**kwargs):格式化字符串。比如:

    {{ "%s" - "%s"|format('Hello?',"Foo!") }}
    将输出:Helloo? - Foo!
    last(value):返回一个序列的最后一个元素。示例:names|last。

    length(value):返回一个序列或者字典的长度。示例:names|length。
    join(value,d=u''):将一个序列用d这个参数的值拼接成字符串。
    safe(value):如果开启了全局转义,那么safe过滤器会将变量关掉转义。示例:content_html|safe。
    int(value):将值转换为int类型。
    float(value):将值转换为float类型。
    lower(value):将字符串转换为小写。
    upper(value):将字符串转换为小写。
    replace(value,old,new): 替换将old替换为new的字符串。
    truncate(value,length=255,killwords=False):截取length长度的字符串。
    striptags(value):删除字符串中所有的HTML标签,如果出现多个空格,将替换成一个空格。
    trim:截取字符串前面和后面的空白字符。
    string(value):将变量转换成字符串。
    wordcount(s):计算一个长字符串中单词的个数。

     

    人生苦短,何不用python
  • 相关阅读:
    第一课:数据库介绍篇
    爬虫day03 cast
    python excel
    爬虫 cast_day05_多进程_多线程_协程_selenium的使用
    进程_线程_协程回顾!
    进程_线程_协程回顾 2!
    day 06 爬虫
    看正月点灯笼老师的笔记 —动态规划2.1
    动态规划——放苹果

  • 原文地址:https://www.cnblogs.com/yqpy/p/8642008.html
Copyright © 2020-2023  润新知