Flask-web框架-初識
阿新 • • 發佈:2021-08-06
概述
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>