一、Flask 返回 Json 科學計數法
在 Flask 中,我們可以通過 jsonify 方法返回 Json 數據。對於數字類型的數據,在傳輸過程中會出現科學計數法的情況。下面我們來看一個例子:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
data = {
"large_number": 12345678901234567890
}
return jsonify(data)
if __name__ == '__main__':
app.run()
這時候,我們訪問到網頁上的數據會出現:
{
"large_number": 1.2345678901234568e+19
}
這種情況下,我們可以使用 simplejson 庫中的 dumps 轉換。修改上述代碼如下:
from flask import Flask, Response
import simplejson as json
app = Flask(__name__)
@app.route('/')
def index():
data = {
"large_number": 12345678901234567890
}
return Response(json.dumps(data), mimetype='application/json')
if __name__ == '__main__':
app.run()
這時候,我們訪問到網頁上的數據會正常顯示:
{
"large_number": 12345678901234567890
}
二、Flask 返回 Json 文件
我們可以在 Flask 中生成 Json 格式的文件,並且可以直接將該文件返回給前端。下面是一個實例:
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route('/file')
def file():
data = {
"name": "John",
"age": 28,
"city": "New York"
}
with open('data.json', 'w') as f:
json.dump(data, f)
return app.send_static_file('data.json')
if __name__ == '__main__':
app.run(debug=True)
在本例中,我們使用 json.dump 將數據寫入到 data.json 文件中,並通過 Flask 的 send_static_file 方法返回該 Json 文件的內容。
三、Flask 返回 Html
在 Flask 中,我們可以通過 render_template 方法來返回 HTML 頁面。下面是一個實例:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/index')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
在本例中,我們在 Flask 應用目錄下創建了一個名為 index.html 的文件,然後在返回時使用了 render_template 方法。
四、Flask 返回 Json 格式列表
在 Flask 中,實現返回一個 Json 格式的列表,我們可以將所有項都存入一個 Python 的列表中,然後使用 jsonify 方法返回這個列表。下面是一個例子:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/list')
def index():
data = [
{
"name": "John",
"age": 28,
"city": "New York"
},
{
"name": "Jane",
"age": 26,
"city": "San Francisco"
},
{
"name": "Bill",
"age": 35,
"city": "Los Angeles"
}
]
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
在這個例子中,我們將所有數據都存入了一個列表中,並使用了 jsonify 方法將整個列表作為 Json 格式返回。
五、Flask 返回格式
在 Flask 中,我們可以通過 Response 對象來重新定義返回的格式。下面我們來看一個例子,將返回格式定義為 XML:
from flask import Flask, Response
app = Flask(__name__)
@app.route('/')
def index():
data = '''
John
28
New York
'''
return Response(data, mimetype='text/xml')
if __name__ == '__main__':
app.run(debug=True)
在本例中,我們將數據定義為 XML 格式,並通過 Response 對象將其返回給前端。在 Response 對象中,我們可以自定義 mimetype 來定義返回結果的格式。
六、Flask 返回 Json 數據到前端
在 Flask 中,我們可以通過 Json 數據與前端進行交互。下面是一個例子:
from flask import Flask, jsonify, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/api')
def api():
keyword = request.args.get('keyword')
result = [
{"name": "John", "age": 28},
{"name": "Jane", "age": 26},
{"name": "Bill", "age": 35}
]
if keyword:
result = [x for x in result if keyword in x['name']]
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True)
在這個例子中,我們在 Flask 中定義了一個名為 api() 的方法,並通過 render_template 方法將前端頁面提供給用戶。在前端頁面中,我們定義了一個名為 search 的文本框,並使用 jQuery 技術對該文本框進行綁定。當用戶在文本框中輸入關鍵字時,會自動執行 Ajax 請求,調用 api() 方法獲取數據。
七、Flask 返回 Jsonify 重新渲染頁面
在 Flask 中,我們可以通過 jsonify 方法重新渲染頁面。下面是一個例子:
from flask import Flask, jsonify, render_template
app = Flask(__name__)
@app.route('/posts')
def posts():
posts = [
{"id": 1, "title": "First post", "content": "Hello world!"},
{"id": 2, "title": "Second post", "content": "Flask is awesome!"},
{"id": 3, "title": "Third post", "content": "Coding is fun!"}
]
return render_template('posts.html', posts=posts)
@app.route('/like/')
def like(post_id):
posts = [
{"id": 1, "title": "First post", "content": "Hello world!", "likes": 0},
{"id": 2, "title": "Second post", "content": "Flask is awesome!", "likes": 0},
{"id": 3, "title": "Third post", "content": "Coding is fun!", "likes": 0}
]
for post in posts:
if post['id'] == post_id:
post['likes'] += 1
return jsonify({'likes': posts[post_id-1]['likes']})
if __name__ == '__main__':
app.run(debug=True)
在這個例子中,當用戶點擊喜歡時,會調用 like() 方法,返回 Json 數據。我們在前端頁面中使用 jQuery 對數據進行綁定,並重新渲染頁面。
八、Flask 返迴文件
在 Flask 中,我們可以通過 send_file 方法返迴文件。下面是一個例子:
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/download')
def download():
filename = 'data.txt'
return send_file(filename, as_attachment=True)
if __name__ == '__main__':
app.run(debug=True)
在本例中,我們通過 send_file 方法將一個文件返回給前端用戶。
九、Flask 返回圖片給前端選取
在 Flask 中,我們可以通過 send_file 方法返回圖片以供前端進行下載和選擇。下面是一個例子:
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/images/')
def images(filename):
return send_file('images/' + filename, mimetype='image/png')
if __name__ == '__main__':
app.run(debug=True)
在這個例子中,我們將圖片存儲在 Flask 目錄下的 images 文件夾中,並通過 send_file 方法返回。我們可以在前端頁面中使用 img 標籤來調用這個方法,並顯示圖片。
原創文章,作者:BGSG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/131072.html
微信掃一掃
支付寶掃一掃