from flask import Flask # 實例化Flask對象 app app = Flask(__name__) @app.route('/index') # 視圖函數 def index(): return 'helloword'
from flask import Flask from flask import render_template @app.route('/home') def home(): # 模板存放路徑 # 建立 templates文件夾;右鍵文件夾 ---》Mark Directory as --->templates ---jinja2 return render_template('home.html') # 啓動服務 app.run()
三、redirect("/home")html
from flask import Flask,render_template,redirect # 實例化Flask對象 app app = Flask(__name__) # app中的route裝飾器 路由 @app.route('/index') # 視圖函數 def index(): return 'helloword' @app.route('/home') def home(): # 模板存放路徑 return render_template('home.html') @app.route("/re") def re(): # 重定向 return redirect("/home") # 啓動服務 app.run()
四、send_file('文件路徑') 返回文件python
打開文件並返回文件內容;自動識別文件類型,而且在瀏覽器自動加上ResponseHeaders而且加入Content-Type:文件類型,是能夠被客戶端識別的文件類型;不能識別的文件類型 好比 .exe文件 會下載處理 - -瀏覽器會下載json
x-ms x:二進制 ; ms 微軟flask
from flask import Flask, send_file @app.route('/get_file') def get_file(): # 返回helloword.py裏的內容 Content-Type: text/plain; charset=utf-8 return send_file('helloword.py') # 返回圖片 Content-Type: image/jpeg return send_file('1.jpg') # 返回MP4 或 MP3 Content-Type: voide/mp4 return send_file('2.mp4') # 下載 這個exe文件 Content-Type: application/x-msdownload return send_file('3.exe') # 啓動服務 app.run()
五、jsonify('字符串或數據類型') 返回標準格式的Json字符串瀏覽器
Content-Type:application/jsoncookie
# 好比Flask更新了 1.1.1 # return d # 暫時不建議使用,兼容性 # 直接返回dict時 本質上在執行jsonify(d)
API接口app
序列化json字符串ide
編寫ResponseHeaders 加入Conent-Type:application/json函數
from flask import Flask, jsonify # 實例化Flask對象 app app = Flask(__name__) @app.route('/get_json') def get_json(): dic = { "name": "anwen" } # Content-Type:application/json return jsonify(d) # 好比Flask更新了 1.1.1 # return dic # 暫時不建議使用,兼容性;直接返回dic時 本質上在執行jsonify(d) # 啓動服務 app.run()
# -*- coding: utf-8 -*- # @Time : 2019/9/24 11:07 # @Author : AnWen import os from flask import Flask, render_template, request, redirect app = Flask(__name__) app.debug = True # 報錯 405 Method Not Allowed # methods=['GET', 'POST'] 添加路由的裝飾器容許請求方式,覆蓋 @app.route('/login', methods=['GET', 'POST']) def login(): # request.method 獲取請求方式 if request.method == 'GET': # 在Django request.GET 取出 URL 中的參數 # 在Flask 獲取URL 中的參數 # print(request.url) # 請求地址 http://127.0.0.1:9999/login?id=wen # print(request.url_charset) # URL 編碼方式 utf-8 # print(request.url_root) # 請求地址 完整請求地址 host http://127.0.0.1:9999/ # print(request.url_rule) # 請求路由地址 /login # print(request.values.to_dict()) # 接收全部(GET,POST)請求中的數據,包含了 URL 和 FormData 中的數據 {'id': 'wen'} # print(request.args.get("id")) # 獲取URL中的數據 字符串 wen return render_template('login.html') if request.method == 'POST': # request.form獲取 FormData中的數據 # print(request.form) # ImmutableMultiDict([('username', '123')]) # print(request.form.get('username')) # 123 # print(request.form.to_dict()) # {'username': '123'} # request.files 全部文件類型所有放在這裏 包括二進制 音頻視頻 # print(request.files.get("myfile")) # 文件對象<FileStorage: 'Flask day01.md' ('application/octet-stream')> # my_file = request.files.get('myfile') # # my_file.save('bf.jpg') # 當前目錄下會保存一個bf.jpg # new_file = os.path.join('img',my_file.filename) # my_file.save(new_file) # 保存原文件到文件夾中 # 獲取其餘數據 # request.headers # request.cookies # request.path == request.url_rule # request.host == "127.0.0.1:9527" # request.host_url == "http://127.0.0.1:9527/" # 特殊提交方式數據獲取 # Content-Type:application/json # request.json 獲取Content-Type:application/json時提交的數據 # Content-Type 沒法被識別 或 不包含Form字眼 # request.data 獲取 原始請求體中的數據 b"" return '200 ok' # return redirect('/') @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run("0.0.0.0", 9999)