Flask 是一個用於 Python 的微型網絡開發框架,可以用於快速的搭建一個小型的網站。
我的搜索引擎:http://www.abelkhan.com 就是基於flask開發
一個flask的Hello World
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
其中,app = Flask(__name__)創建的app對象就是我們的網站應用的實例。
可以看到,Flask通過@修飾符,app.route實現了對url請求到函數接口的路由。
也就是說,你如果在瀏覽器請求http://url.com/,通過app.route的作用,最終就會調用到hello_world。
使用flask做文件服務器,和nginx不同,flask不能直接提供對文件的路由,
而是需要用app.route實現對url的路由
@app.route('/JSONError.js') def file_JSONError(): from io import BytesIO try: return Response(BytesIO(globalv.res_data['JSONError.js']), mimetype='js') except: traceback.print_exc()
並在對應得函數中,返回對應得文件內容。
flask中的Response,就是對於的http請求中的的Request和Response
包含如下信息:
status 狀態碼,元數據
status_code
只包含 code 的 status
headers
頭,元數據
mimetype
去掉 charset 的 content type,如 application/json
data
body,元數據
我們通過Response即可返回文件數據
處理AJAX請求,也就是來至javascript的post的請求:
js的請求如下:
table_regchange.onclick=function() { var params = {"sid":sid}; JSONRequest.post("http://abelkhan.com/changecheck", params, function (requestNumber, value, exception){ table_regcheck.innerHTML = value["check"]; }); };
后端的響應代碼:
@app.route('/changecheck', methods=['POST']) def changecheck(): try: from io import BytesIO r = on_get_check(request.get_json()) rsp = Response(BytesIO(json.dumps(r)), mimetype='text/json') return rsp except: traceback.print_exc()
這里是前端請求更換驗證碼,然后服務器返回新的驗證碼的代碼,
如此即可完成請求-響應的邏輯流程。
開源的搜索引擎:http://www.abelkhan.com/
歡迎大家圍觀!
使用python編寫了后端網絡爬和前端網站
項目地址:http://www.abelkhan.com/
向我們提出意見:http://www.abelkhan.com/guestbook/
對項目進行捐助:http://www.abelkhan.com/collection/
代碼托管地址如下:https://github.com/qianqians/websearch歡迎大家參與