Flask-web框架-初识

概述

Flask诞生于2010年, Armin Ronacher的一个愚人节玩笑。不过如今已是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。html

Flask自己至关于一个内核,其余几乎全部的功能都要用到扩展,都须要用第三方的扩展来实现。用 extension 增长其余功能。Flask没有默认使用的数据库、窗体验证工具。你能够选择MySQL,也能够用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2 .前端

Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,可是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜好的缘由。python

Flask扩展包:

  • Flask-SQLalchemy:操做数据库;
  • Flask-migrate:管理迁移数据库;
  • Flask-Mail:邮件;
  • Flask-WTF:表单;
  • Flask-script:插入脚本;
  • Flask-Login:认证用户状态;
  • Flask-RESTful:开发REST API的工具;
  • Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  • Flask-Moment:本地化日期和时间;

项目结构

  • static
    存放静态文件web

  • templates
    存放模板文件数据库

  • app.py
    程序入口flask

代码内容

# -*- 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>
相关文章
相关标签/搜索