入門(十)Flask框架

1、簡介

常見的Python Web框架:

  • Flask:是一個使用 Python 編寫的輕量級Web框架,快速開發(fā)Web應用
  • Django:全能型Web框架,重量級,功能強大

(1)安裝

  • pip install flask
    (2)使用
from flask import Flask

# 創(chuàng)建一個app,
app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World'


@app.route('/list')
def list_book():
    return str([1, 2, 3])
    
    
if __name__ == '__main__':
    app.run(port='8000', debug=True)

開啟debug后,會監(jiān)測文件更改,并且給出更詳細的報錯信息

2、獲取參數(shù)

(1)、get請求參數(shù)

from flask import Flask, request


app = Flask(__name__)


@app.route('/test_get')
def test_get():
    a = request.args.get('a', default=1)
    b = request.args.get('b', default=2)
    print(a, b)
    return 'get'


if __name__ == '__main__':
    app.run(debug=True)

(2)、post請求參數(shù)

from flask import Flask, request


app = Flask(__name__)


@app.route('/test_get')
def test_get():
    a = request.args.get('a', default=1)
    b = request.args.get('b', default=2)
    print(a, b)
    return """
    <form action="/test_post" method="post">
        姓名:<input name="username" />
        密碼:<input name="password" />
        <input type="submit" value="提交" />
    </form>
    """


@app.route('/test_post', methods=['POST', 'GET'])
def test_post():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        return username
    else:
        return '登錄失敗'


if __name__ == '__main__':
    app.run(debug=True)

(3)、rest動態(tài)路由

from flask import Flask, request


app = Flask(__name__)


@app.route('/test_rest/<username>')
def test_rest(username):
    return username
    

if __name__ == '__main__':
    app.run(debug=True)

rest參數(shù)類型限定,@app.route('/test_rest/<str:username>')

(4)、文件上傳

from flask import Flask, request
import time
import random

app = Flask(__name__)


@app.route('/getload')
def get_load():
    return '''
    <form action="upload" method="post" enctype="multipart/form-data">
        file:<input type="file" name="file" />
        <input type="submit" value="上傳" />
    </form>
    '''


@app.route('/upload',methods=['post'])
def upload():
    file = request.files['file']
    save_path = (time.strftime('%Y{0}%m{1}%d{2}%H%M%S')).format('年', '月', '日') + str(random.randint(1,100)) + file.filename
    file.save(save_path)
    return 'success'


if __name__ == '__main__':
    app.run(debug=True)

(5)、JinJa2語法
變量傳遞

@app.route('/test_template')
def test_template():
    return render_template('demo.html', username='zhangsan', age=18)

頁面語法
變量引用

<body>
{{username}}
</body>

分支語法

<body>
{% if username: %}
{{username}}
{% else %}
姓名為空
{% endif %}
</body>

循環(huán)語法

<body>
<ul>
    {% for user in age %}
    <li>{{user.name}}</li>
    {% endfor %}
</ul>
</body>

全局處理異常

@app.errorhandler(404)
def error_hander(e):
    print(e)
    return render_template('404.html')

(6)、利用藍圖模塊化路由

  • 定義user模塊

from flask import Blueprint

# 創(chuàng)建藍圖
user_cont = Blueprint('user', __name__)


@user_cont.route('/user')
def prod_list():
    return 'user_list'
  • 定義product模塊
from flask import Blueprint

# 創(chuàng)建藍圖
product_controller = Blueprint('product_controller', __name__)


@product_controller.route('/pro')
def prod_list():
    return 'prod_list'

注冊路由

from flask import Flask, request, redirect, jsonify, render_template
from mymodule.user_controller import user_cont
from mymodule.product_controller import product_controller


app = Flask(__name__)
app.register_blueprint(user_cont)
app.register_blueprint(product_controller)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容