有兴趣的请加船长公众号:自动化测试实战

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

# 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等进行逻辑判断。

最后执行上面代码:

flask第二十五篇——控制语句的更多相关文章

  1. flask第二十六篇——模板【控制语句】【2】

    如果你也在学flask,就请加船长的公众号:自动化测试实战 我们先补充一下for循环的知识,我们之前说过,flask是由Jinja2+sqlAlchemy+werkzeug组成的,我们现在学的控制语句 ...

  2. Flask最强攻略 - 跟DragonFire学Flask - 第十五篇 Flask-Script

    其实本章就是为下一章做的铺垫啦,但是也要认真学习哦 Flask-Script 从字面意思上来看就是 Flask 的脚本 是的,熟悉Django的同学是否还记得Django的启动命令呢? python ...

  3. flask第二十二篇——模板【4】过滤器

    请关注微信公众号:自动化测试实战 先来教大家一个pycharm设置默认模板的方法.我们每次新建模板或者平时写代码打开以后可能都要重复写# coding: utf-8这些代码,其实我们可以设置好模板,让 ...

  4. 第二十五篇:在SOUI中做事件分发处理

    不同的SOUI控件可以产生不同的事件.SOUI系统中提供了两种事件处理方式:事件订阅 + 事件处理映射表(参见第八篇:SOUI中控件事件的响应) 事件订阅由于直接将事件及事件处理函数连接,不存在事件分 ...

  5. Python之路(第二十五篇) 面向对象初级:反射、内置方法

    [TOC] 一.反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它 ...

  6. flask第二十九篇——一个例子+【更新内容通知】

    请关注公众号:自动化测试实战 大家先自己写一下,船长写这个花了半个小时,因为我和大家一样,也是新手: 写一个页面如下,点击书名以后跳转到书的详情页 书的信息如下: books = [ { 'id': ...

  7. flask第二十四篇——模板【6】自定义过滤器

    请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...

  8. 第二十五篇:使用 sigaction 函数实现可靠信号

    前言 在前文中,讲述了一个可靠信号的示例.它分成几个步骤组成( 请参考前文 ).在 Linux 系统编程中,有个方法可以将这些步骤给集成起来,让我们使用起来更加的方便. 那就是调用 sigaction ...

  9. flask第十五篇——Response

    从这一节开始,我就要开始讲关于模板的知识了.先来学习一下Response的相关知识. 所有返回前台的内容其实都应该是Response的对象或者其子类,我们看到如果返回的是字符串直接可以写成return ...

随机推荐

  1. Bootstrap按钮组学习

    简介 通过按钮组容器把一组按钮放在同一行里.通过与按钮插件联合使用,可以设置为单选框或多选框的样式和行为. 按钮组中的工具提示和弹出框需要特别的设置 当为 .btn-group 中的元素应用工具提示或 ...

  2. 24UDP通信

    使用Qt提供的QUdpSocket进行UDP通信.在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据.类似的服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端 ...

  3. poj1151 Atlantis && cdoj 1600艾尔大停电 矩形面积并

    题目: Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23758   Accepted: 8834 Des ...

  4. iOS App迁移(App Transfer)注意点

    1.App迁移需要苹果审核吗? 答:不需要 2.App迁移需要多长时间? 答:迁移操作过程很快,A账号发出申请,B账号接收,几分钟时间.App Store 展示B账号相关信息可能几分钟,也可能有延迟几 ...

  5. Core Java 5

    p273~p276: 1.获取异常的更多信息:e.getMessage(). 2.得到异常的实际类型:e.getClass().getName(). 3.当异常之间不存在子类关系,并且异常的处理机制( ...

  6. Linux基础入门(实验楼实验)

    实验一 Linux系统简介 Linux和windows.Mac OS一样是一种操作系统.最早流行起来的操作系统是UNIX,但由于其过度商业化,价格昂贵,因此在校园里人们大多选择MINIX.1991年, ...

  7. 20155201 2016-2017-2 《Java程序设计》第四周学习总结

    20155201 2016-2017-2 <Java程序设计>第四周学习总结 教材学习内容总结 - 第六章要点: 继承:面向对象中,子类继承父类,避免重复的行为定义.继承基本上就是避免多个 ...

  8. 20145221 《Java程序设计》课程总结

    20145221 <Java程序设计>课程总结 每周读书笔记链接汇总 Atom使用心得 - 21世纪的编辑器 网络安全攻防学习平台 - 基础关 Java实现:数据结构之排序 2014522 ...

  9. 20145311实验五"Java网络编程及安全"

    20145311实验五 "Java网络编程及安全" 程序设计过程 实验内容 ·掌握Socket程序的编写:·掌握密码技术的使用:·设计安全传输系统 ·利用加解密代码包,编译运行代码 ...

  10. 框架-springmvc源码分析(一)

    框架-springmvc源码分析(一) 参考: http://www.cnblogs.com/heavenyes/p/3905844.html#a1 https://www.cnblogs.com/B ...