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)