专栏首页自动化测试实战flask第二十五篇——控制语句

flask第二十五篇——控制语句

先和大家强调一个发邮件的问题

# coding: utf-8

import smtplib
from email.mime.text import MIMEText

mail_host = 'smtp.163.com'
receivers = ['31abc@qq.com','72abc@qq.com']
password = '授权码'
sender = 'warrior_meng08@163.com'
msg = MIMEText('Python 发邮件', 'plain', 'utf-8')
msg['From'] = sender
msg['To'] = ';'.join(receivers)
msg['Subject'] = '主题'
try:
    server = smtplib.SMTP()
    server.connect(mail_host, 25)
    server.login(sender, password)
    server.sendmail(sender, receivers, msg.as_string())
    server.close()
    print '发送成功'
except smtplib.SMTPException:
    print '无法发送'

当我们发送给多人时,就是receivers是多人时,在msg['To']这里必须传';'.join(receivers),你可以直接像船长上面代码那样写,这样就不会有太多receiver弄混了;第二点就是sendmail方法必须传list类型的数据,大家看到上面代码里我sendmail的第二个参数是receivers,这是一个list,这样才能使收件的所有人都能收到邮件,如果sendmail传的不是list,就会导致只有第一个收件人可以收到邮件,而后面的人收不到邮件。以上代码已经测试通过,大家可以直接复制拿过去。


好,今天我们来讲flask的控制语句。说起控制语句无非是iffor这种:

flaskDemo.py

# coding: utf-8

from flask import Flask, render_template

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def login():
    context = {
        "user": {
            "name": "Warren",
            "age": 18,
            "gender": 'male'
        }
    }
    
    return render_template('index.html', **context)

if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>控制语句</title>
</head>
<body>
    {# 如果姓名name是Warren,就打印名字,否则打印其他信息 #}
    {% if user.name == "Warren" %}
        <p>用户名是Warren</p>
    {% else %}
        <p>用户名不是Warren</p>
    {% endif %}
</body>
</html>
  • for循环

python知识补充


遍历字典

context = {
    "users": [
        {
            "name": "Warren",
            "age": 18,
            "gender": 'male'
        },
        {
            "name": "Captain",
            "age": 20
        }
    ],
    "groups":
        {
            "math": "perfect",
            "Chinese": "Great"
        }
}

# 遍历字典的key和value
for key, value in context.iteritems():
    print key, value
    
# 遍历字典的key
for key in context.iterkeys():
    print key
    
# 遍历字典的value
for value in context.itervalues():
    print value

如果你要遍历字典的keyvalue,那么in后面就要写自点名.iteritems(),这样就会遍历出字典的全部key和对应的value;如果单独遍历key或者value,那么就要写字典名.iterkeys()或者字典名.itervalues()

flaskDemo.py

# coding: utf-8

from flask import Flask, render_template

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def login():
    context = {
        "users": [        
            {
                "name": "Warren",
                "age": 18,
                "gender": 'male'
            },
            {
                "name": "Captain",
                "age": 20
            }
        ],
        "groups":
            {
                "math": "perfect",
                "Chinese": "Great"
            }
    }
                
    return render_template('index.html', **context)


if __name__ == '__main__':
    app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>控制语句</title>
</head>
<body>
    {# 如果姓名name是Warren,就打印名字,否则打印其他信息 #}
    {% if users[0].name == "Warren" %}
        <p>{{ users[0].name }}</p>
        <p>用户名是Warren</p>
    {% else %}
        <p>用户名不是Warren</p>
    {% endif %}

    {# for循环 #}
    <h3>遍历列表</h3>
    <table>
        <thead>
            <th>姓名</th>
            <th>年龄</th>
        </thead>
        <tbody>
            {% for user in users %}
                <tr>
                    <td>{{ user.name }}</td>
                    <td>{{ user.age }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>

    <h3>遍历字典</h3>
    {% for key, value in groups.items() %}
        <p>key: {{ key }};value: {{ value }}</p>
    {% endfor %}
</body>
</html>

上面html代码中使用了table标签,大家先这么照着写,说实话我也不太明白,船长会尽快给大家讲一下这个table标签的使用的。

总结


所有的控制语句都是通过{% statement %}来使用,并且都有一个结束语句{% endstatement %},Python中的>, <, !=, >=等判断都可以用在if里,也可以通过and, or,not等进行逻辑判断。

最后执行上面代码:

本文分享自微信公众号 - 自动化测试实战(gh_839e78b6ba28),作者:孟船长

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • flask第七篇——URL与视图函数的映射

    用户2149234
  • Flask第36篇——模板项目实战(二)

    前面我们利用宏将首页代码进行了第一次优化。如果我们现在还有其他页面,试想一下,首页上面的搜索框

    用户2149234
  • 《selenium2 python 自动化测试实战》(12)——跳过验证码登录add_cookie

    用户2149234
  • Python 面向对象-如何查看类的父类,外部如何获取类的名字

    B.__base__.__name__ 可以获取到父类的名字。 没有的话就是 object,object 就是一切对象的父类。

    小蓝枣
  • 测试

    用户5399118
  • 注意了!ArrayList 增删千万不要乱用…

    编程过程中常常需要使用到集合,而ArrayList是我们常常使用的,但是最近在一次删除和增加中出现了一些问题,分享记录下。

    Java技术栈
  • 【每周一坑】生成九宫格图片

    非常简单的功能,但在开发中很常见,很多网页/应用里缩略图都是对图片进行缩放+切割得到的。

    Crossin先生
  • bash 的条件和循环

    本文作者:IMWeb 江源 原文出处:IMWeb社区 未经同意,禁止转载 原文 条件语句和循环可以统称为流程控制,是一门语言最基础的部分。 bash ...

    IMWeb前端团队
  • bash 的条件和循环

    条件这块建议先去瞧瞧《bash 的 Test》。bash 中的条件语句,基础就是 Test 。

    IMWeb前端团队
  • 猫头鹰的深夜翻译:如何优化MYSQL查询

    索引除了能够确保唯一的标记一条记录,还能是MySQL服务器更快的从数据库中获取结果。索引在排序中的作用也非常大。

    眯眯眼的猫头鹰

扫码关注云+社区

领取腾讯云代金券