Flask-web框架-初识
概述
Flask诞生于2010年, Armin Ronacher的一个愚人节玩笑。不过现在已经是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。
Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展,都需要用第三方的扩展来实现。用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。你可以选择MySQL,也可以用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2 .
Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。
Flask扩展包:
- Flask-SQLalchemy:操作数据库;
- Flask-migrate:管理迁移数据库;
- Flask-Mail:邮件;
- Flask-WTF:表单;
- Flask-script:插入脚本;
- Flask-Login:认证用户状态;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
项目结构

-
static
存放静态文件 -
templates
存放模板文件 -
app.py
程序入口
代码内容
# -*- coding utf-8 -*-
# coding: utf-8
#导入相关库
from flask import Flask,render_template,request,flash
#启动一个Flask实例
app = Flask(__name__)
#设置secret_key,信息加密设置
app.secret_key="sarafsdsa"
#装饰器定义Flask路由,及请求方式
@app.route('/',methods=['GET','POST'])
def index():
url_str='www.qwe123112312sd.com'
my_int = 2312412
my_list = [1,2,3,4,5,6,7,8,9]
my_dict = {
'name': 'hello world',
'domain': '1231234323'
}
if request.method == "POST":
username = request.form.get('username') #接收表单信息
password = request.form.get('password')
if not all([username,password]): #简单判断当前接收数据是否合法
flash(u"参数不完整") #消息闪现
else:
flash('username: %s password: %s' %(username,password))
#定义发送到index.html的参数,变量名称最好一致
return render_template("index.html",url_str=url_str,my_int=my_int,my_list=my_list,my_dict=my_dict)
#<>内定义传参,限定为int类型
@app.route('/orders/<int:order_id>')
def get_orders_id(order_id):
return 'order_id: %s' %order_id
if __name__ == '__main__':
app.run(debug=True) #开启debug模式方便调试
模板内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
字符串:{{ url_str }}<br>
整型:{{ my_int }}<br>
列表:{{ my_list }}<br>
列表取值1:{{ my_list[2] }}<br>
列表取值2:{{ my_list.2 }}<br>
字典取值:<br>
{{ my_dict }}<br>
{{ my_dict['name'] }}<br>
{{ my_dict.name }}<br>
{{ my_dict['domain'] }}<br>
{{ my_dict.domain }}<br>
{# for循环遍历#}
{% for my in my_list %}
{{ my }}<br>
{% endfor %}
<br>
{# for循环遍历加if判断#}
{% for my in my_list %}
{% if my > 3 %}
{{ my }}<br>
{% endif %}
{% endfor %}
<form method="POST">
<lable>用户名:</lable><input type="text" name="username"><br>
<lable>密码:</lable><input type="password" name="password"><br>
<lable><input type="submit" value="提交"></lable><br>
{# 使用遍历获取返回的flash消息 #}
{% for messages in get_flashed_messages() %}
{{ messages }}
{% endfor %}
</form>
</body>
</html>

浙公网安备 33010602011771号