最近在學習Python的flask微框架,用到最多的就是和前端針對REST API進行交互,那麼天然而然傳遞Json就成爲了屢見不鮮,特地總結了一下和前端交互幾種方法。前端
這一中方法主要利用flask的request.form.get方法,得到前端發送給後臺的json文件ajax
Python 端代碼:json
@app.route('/sendjson', methods=['POST']) def sendjson(): # 接受前端發來的數據 data = json.loads(request.form.get('data')) # lesson: "Operation System" # score: 100 lesson = data["lesson"] score = data["score"] # 本身在本地組裝成Json格式,用到了flask的jsonify方法 info = dict() info['name'] = "pengshuang" info['lesson'] = lesson info['score'] = score return jsonify(info)
JS代碼:flask
<script> $(document).ready(function () { var data = { data: JSON.stringify({"lesson": "Operation System", "score": 100}) } $.ajax({ url:"/sendjson", type: 'POST', data: data, success: function (msg) { alert(msg.name) } }) }); </script>
Python端代碼:app
@app.route('/sendjson2',methods=['POST']) def sendjson2(): # 接收前端發來的數據,轉化爲Json格式,我我的理解就是Python裏面的字典格式 data = json.loads(request.get_data()) # 而後在本地對數據進行處理,再返回給前端 name = data["name"] age = data["age"] location = data["location"] data["time"] = "2016" # Output: {u'age': 23, u'name': u'Peng Shuang', u'location': u'China'} # print data return jsonify(data)
相比第一種方法JS的代碼,這一種更常見也更容易理解一些,在前端組織好Json,再傳遞給後臺框架
JS代碼:less
<script> $(document).ready(function () { var student = new Object(); student.name = "Peng Shuang"; student.age = 23; student.location = "China"; var data = JSON.stringify(student) $.ajax({ url: "/sendjson2", type: "POST", data: data, success: function (msg) { alert(msg.time) } }) }) </script>