摘要:回顧通過前幾篇文章的內容我們已經搭建了基于框架的一個簡單的應用的代碼如下抽象出類由于我們在以后的每個頁面的中都要用到以及其他一些共用的特性我們將其提取出來抽象成一個類修改如下提取其他共用特性一般出現在請求中比如搜索時地址欄出現的
回顧
通過前幾篇文章的內容, 我們已經搭建了基于 Flask 框架的一個簡單的 Web 應用, server.py 的代碼如下
from flask import Flask, make_response from flask.views import MethodView app = Flask(__name__) class IndexHandler(MethodView): def get(self): resp = make_response("It is a GET request") resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload" return resp if __name__ == "__main__": app.add_url_rule("/", view_func=IndexHandler.as_view("index")) context = ("./server.cer", "./server.key") app.run(port=443, host="0.0.0.0", debug=True, threaded=True, ssl_context=context)抽象出 Page 類
由于我們在以后的每個頁面的 Handler 中都要用到 HSTS, 以及其他一些共用的特性, 我們將其提取出來, 抽象成一個 Page 類, 修改 server.py 如下
from flask import Flask, make_response from flask.views import MethodView app = Flask(__name__) class Page(MethodView): def render(self, content): resp = make_response(content) resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload" return resp class IndexHandler(Page): def get(self): content = "It is a GET request" return self.render(content) if __name__ == "__main__": app.add_url_rule("/", view_func=IndexHandler.as_view("index")) context = ("./server.cer", "./server.key") app.run(port=443, host="0.0.0.0", debug=True, threaded=True, ssl_context=context)提取其他共用特性
get_args()
args 一般出現在 GET 請求中, 比如 Google 搜索時地址欄出現的 https://www.google.com/search?q=awesome, 其中 ? 后面的內容就是 args, 以 key-value 的形式出現. 對應剛才的例子, key 就是 q, value 就是 awesome. 如果有多組 key-value, 中間就用 & 連接, 如 ?q=awesome&type=server. 這種形式很容易讓我們聯想到 Python 的字典結構 dict. 根據 文檔, Flask 是通過 ImmutableMultiDict 來存儲 args 的. 我們可以在 Page 類中增加 get_args() 方法
from flask import request class Page(MethodView): def get_args(self, key): return request.args.get(key)
這樣, 我們就可以通過調用 get_args() 來獲取用戶請求中的參數了, 舉個栗子
class AwesomeHandler(Page): def get(self): if self.get_args("q") == "awesome": # do something return "This is an awesome page!"
同樣地, 我們可以在 Page 類中增加其他特性, 如 get_date(), get_referer(), get_cookies() 等等, 編寫好的 Page 類如下
from flask import Flask, make_response, request from datetime import datetime, date class Page(MethodView): def render(self, content): resp = make_response(content) resp.headers["Strict-Transport-Security"] = "max-age=15768000; includeSubDomains; preload" return resp def get_args(self, key): return request.args.get(key) def get_date(self, year=0, month=0, day=0): if year and month and day: return date(year, month, day) else: return date.today() def get_referer(self): return request.headers.get("referer") def get_cookies(self): return request.cookies參考資料
http://flask.pocoo.org/docs/1...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43195.html
摘要:國內各大公司都已經投入使用,在一些常見的網站,如淘寶騰訊小米等移動站點,隨處可見其蹤影。變革之騰訊手機淘寶的設計與實現前端亂燉適配總結樣式重置上文已提及,這里推薦閱讀同學寫的專題文章。 前言 CSS代碼難維護眾所皆知。 為一個元素設置樣式的方式可以通過定義的class、定義的id、元素的標簽名、元素的屬性等選擇器以及這些選擇器的組合來實現; 作用于某個元素上的樣式又可能來自單個樣式規...
摘要:國內各大公司都已經投入使用,在一些常見的網站,如淘寶騰訊小米等移動站點,隨處可見其蹤影。變革之騰訊手機淘寶的設計與實現前端亂燉適配總結樣式重置上文已提及,這里推薦閱讀同學寫的專題文章。 前言 CSS代碼難維護眾所皆知。 為一個元素設置樣式的方式可以通過定義的class、定義的id、元素的標簽名、元素的屬性等選擇器以及這些選擇器的組合來實現; 作用于某個元素上的樣式又可能來自單個樣式規...
閱讀 1239·2021-11-11 16:55
閱讀 1537·2021-10-08 10:16
閱讀 1188·2021-09-26 10:20
閱讀 3569·2021-09-01 10:47
閱讀 2451·2019-08-30 15:52
閱讀 2682·2019-08-30 13:18
閱讀 3194·2019-08-30 13:15
閱讀 1115·2019-08-30 10:55