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欢迎大家参与