1. 程式人生 > 其它 >Flask-web框架-初識

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>